我的目标是将主键值+7增加到MySQL db中的表中。
Tablename = table,Primary key = id
示例:
id name surname
1 John Doe
2 Mary McCain
3 Sam Smith
4 Roy Jenson
我需要把它变成
id name surname
8 John Doe
9 Mary McCain
10 Sam Smith
11 Roy Jenson
这样我就可以在现有行之前再插入7行。
我试过了:
UPDATE table SET id = id + 7
但我收到错误:
Failed to execute SQL : SQL UPDATE table SET id = id + 7 failed : Duplicate entry '2' for key 1
老实说,我真的不知道如何解决这个问题,因为我在该表中有超过122,000个条目,如果不是几个星期就需要花费几天的时间来手动更新它们。
答案 0 :(得分:14)
只需在更新查询的末尾添加ORDER BY ID DESC
:
UPDATE table SET id = id + 7 ORDER BY ID DESC;
尝试删除给定SQLFiddle中的ORDER BY
,您将得到相同的错误。
如果您尝试减去,则需要在ASC
子句中使用DESC
代替ORDER BY
。
UPDATE table SET id = id - 7 ORDER BY ID ASC;