增加MySQL中列的主键/唯一值

时间:2013-09-14 07:23:56

标签: mysql sql sql-update primary-key unique

我的目标是将主键值+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个条目,如果不是几个星期就需要花费几天的时间来手动更新它们。

1 个答案:

答案 0 :(得分:14)

只需在更新查询的末尾添加ORDER BY ID DESC

UPDATE table SET id = id + 7 ORDER BY ID DESC;

请参阅this SQLFiddle

尝试删除给定SQLFiddle中的ORDER BY,您将得到相同的错误。

请先执行备份。


如果您尝试减去,则需要在ASC子句中使用DESC代替ORDER BY

UPDATE table SET id = id - 7 ORDER BY ID ASC;

请参阅this SQLFiddle