mysql - 插入值 + 最大 ID

标签 mysql sql

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/

相关文章:

php - OpenCart 用户数据库 [BLOB - 198B]

MYSQL删除重复超过 'x'的记录

INSERT 中的 MySQL If 语句,同时从另一个表中选择

mysql - 如何检查mysql中具有特定单词的列的字符串

php - mysql 在 like 和 like 查询错误之间我收到了错误

sql - 如何在 PIG 中完整外连接表和总结

mysql - 授予路径权限

mysql - 带有 Mysql 的 ASP.NET MVC 不会生成 Controller

sql - Grails:在普通的 groovy 类中获取数据源

mysql - 在 SQL 中过滤不同的行