如何在批量插入中自动增加ID

How to auto-increment ID in Batch insert

我想执行以下查询

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

现在所有新条目在表 B 中都具有相同的 ID

我是不是做错了什么。

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

TableB 中的 ID 列声明为 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;