INSERT VALUES +最大ID

问题描述 投票:1回答:1
INSERT INTO newtable (ID) 
VALUES (SELECT MAX( ID)+1 FROM newtable cust) 
SELECT * FROM oldtable WHERE name like 'ItemName%';

嘿伙计们,所以基本上我想要做的是从oldtable获取一个列表并将它们添加到具有相同值的newtable中,但是在newtable中只将ID更改为+1 ..我确定此查询不起作用正如我尝试过但这就是我到目前为止所能做的......

mysql sql
1个回答
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;
© www.soinside.com 2019 - 2024. All rights reserved.