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

Sev*_*evy 6 mysql sql unique primary-key sql-update

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

Tablename = table,主键= id

例:

id   name   surname
1    John   Doe
2    Mary   McCain
3    Sam    Smith
4    Roy    Jenson
Run Code Online (Sandbox Code Playgroud)

我需要把它变成

id   name   surname
8    John   Doe
9    Mary   McCain
10   Sam    Smith
11   Roy    Jenson
Run Code Online (Sandbox Code Playgroud)

这样我就可以在现有的行之前再插入7行.

我试过了:

 UPDATE table SET id = id + 7
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

 Failed to execute SQL : SQL UPDATE table SET id = id + 7 failed : Duplicate entry '2' for key 1
Run Code Online (Sandbox Code Playgroud)

老实说,我真的不知道如何解决这个问题,因为我在该表中有超过122,000个条目,如果不是几个星期,手动逐个更新它们需要几天时间.

him*_*056 14

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

UPDATE table SET id = id + 7 ORDER BY ID DESC;
Run Code Online (Sandbox Code Playgroud)

看到这个SQLFiddle

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

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


如果你试图减去那么你需要使用ASC而不是DESCORDER BY子句中.

UPDATE table SET id = id - 7 ORDER BY ID ASC;
Run Code Online (Sandbox Code Playgroud)

看到这个SQLFiddle

  • 是的,这是有道理的......如果你以最低的id开始并增加它,可能已经有了这样的ID元素,与你的方法不同. (2认同)