6

我的目标是将主键值增加 +7 到 MySQL 数据库中的表中。

表名 = 表,主键 = 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 个条目,如果不是几周的话,手动逐一更新它们需要几天甚至几周的时间。

4

1 回答 1

16

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

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

看到这个 SQLFiddle

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

请在执行此操作之前进行备份。


如果您尝试减去,则需要在子句中使用ASC而不是。DESCORDER BY

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

看到这个 SQLFiddle

于 2013-09-14T07:33:41.527 回答