插入值+最大ID

时间:2018-09-17 12:48:14

标签: mysql sql

INSERT INTO newtable (ID) 
VALUES (SELECT MAX( ID)+1 FROM newtable cust) 
SELECT * FROM oldtable WHERE name like 'ItemName%';

伙计们,所以基本上我想做的是从旧表中获取一个列表,并将它们添加到具有相同值的新表中,但是仅将ID更改为新表中的+1。没像我尝试的那样工作,但是那是我迄今为止可以做到的..

1 个答案:

答案 0 :(得分:0)

如果要重新编号新表中的ID(从最大ID值加1开始),则可以首先获取最大ID值并将其放入变量中:

SELECT MAX(id) INTO @maxid FROM oldtable;

然后插入所有添加了最大值的id:

INSERT INTO newtable (id) 
SELECT id + @maxid + 1 FROM oldtable WHERE name like 'ItemName%';

如果还需要其他属性:

INSERT INTO newtable (id, name, otherattrs) 
SELECT id + @maxid + 1, name, otherattrs FROM oldtable WHERE name like 'ItemName%';

更新: 如果您不想显式列出所有列,则可以使用以下三个语句来实现相同的目的:

SELECT MAX(id) INTO @maxid FROM oldtable;

INSERT INTO newtable 
SELECT * FROM oldtable WHERE name like 'ItemName%';

UPDATE newtable SET id = id + @maxid + 1;