INSERT INTO newtable (ID)
VALUES (SELECT MAX( ID)+1 FROM newtable cust)
SELECT * FROM oldtable WHERE name like 'ItemName%';
大家好,基本上我想做的是从旧表中获取一个列表,然后将它们添加到具有相同值的新表中,但只将新表中的 ID 更改为 +1。我确定这个查询会成功像我尝试的那样工作,但这就是我能做到的..
最佳答案
如果要对新表中的 ID 重新编号,从最大 ID 值加一开始,那么您可以先获取最大 ID 值并将其放入变量中:
SELECT MAX(id) INTO @maxid FROM oldtable;
然后插入所有添加了最大值的 ids:
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;
关于mysql - 插入值 + 最大 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52368150/