1

我有以下要执行的查询

INSERT INTO TableB (ID, Age, RollNo)
SELECT (select (max(id) + 1) from TableB), Age, RollNo
FROM TableA
WHERE Age > 20 AND RollNo < 500

现在所有新条目在 TableB 中都有相同的 ID

难道我做错了什么。

PS 我无法更改列属性,我无法将其设置为 AUTO-INCREMENT,它需要具有默认值 NULL

4

1 回答 1

0

声明最终将用于此目的的IDTableBAUTO_INCREMENT

ALTER TABLE TableB MODIFY COLUMN ID INT auto_increment

在这种情况下,您可以生成这些数字,例如

SET @id := (SELECT MAX(ID) FROM TableB);

INSERT INTO TableB (ID, Age, RollNo)
SELECT (@id := @id + 1), Age, RollNo
FROM TableA
WHERE Age > 20 AND RollNo < 500;
于 2015-09-18T20:53:18.497 回答