我想以此来改变每一行的一个表中的id
(主键,AUTO_INCREMENT):如何按特定顺序更新MySQL行?
UPDATE foo SET id = id + 4;
但它给我:
Duplicate row for primary key value 5
或者一些沿该线。
我该如何解决这个问题?是否有查询以更新的顺序排列的行,所以这不会发生?
谢谢。
我想以此来改变每一行的一个表中的id
(主键,AUTO_INCREMENT):如何按特定顺序更新MySQL行?
UPDATE foo SET id = id + 4;
但它给我:
Duplicate row for primary key value 5
或者一些沿该线。
我该如何解决这个问题?是否有查询以更新的顺序排列的行,所以这不会发生?
谢谢。
这是在单个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
您可以添加额外的column id2
,设置column id2
value=id+4
,然后设置id=id2
。
UPDATE:或者您可以尝试切换检查限制OFF
,做你的更新并切换它ON
。
这应该是答案。 – Dynelight
@Dynelight如果你这么说。 – think123