如何按特定顺序更新MySQL行?

时间:2014-02-26 06:50:30

标签: mysql sql

我正在尝试使用以下方法更改表格中每行的id(主键,AUTO_INCREMENT):

UPDATE foo SET id = id + 4;

但它给了我:

Duplicate row for primary key value 5

或类似的东西。

我该如何解决这个问题?是否存在以向后顺序更新行的查询,因此不会发生这种情况?

感谢。

3 个答案:

答案 0 :(得分:3)

这是在单个SQL语句中执行此操作的解决方案。

UPDATE     foo F 
INNER JOIN (SELECT id FROM foo ORDER BY id DESC) F2 
ON         F.id = F2.id 
SET        F.id = F.id + 4

答案 1 :(得分:0)

这可能不是最有效的方法。但你可以尝试制作一个选择,按ID从最大到最小排序,并逐个修改它。再一次,这是低效的,但它完成了工作。

答案 2 :(得分:0)

您可以添加其他column id2,设置column id2 value=id+4,然后设置id=id2

更新:或者您可以尝试切换检查约束OFF,进行更新并切换ON