我有以下要执行的查询
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
我有以下要执行的查询
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
声明最终将用于此目的的ID
列TableB
AUTO_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;