如何在批量插入中自动增加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;
我想执行以下查询
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;