在MySQL中更新唯一索引列

3

我有一个包含整数的唯一索引列A。我想让它每次加1,在Oracle中,我这样做:update table set A=A+1,它可以正常工作。但是在MySQL中,它会给我以下错误:MySQL数据库错误:键1上存在重复条目“2”。我的表中有三行值分别为1、2和3。我知道为什么会出现这个错误。但是我该如何解决这个问题呢?谢谢。


这在Oracle中可以运行吗? - Strawberry
你如何解决它取决于你想要发生什么。你想删除a=2的另一行吗?你想要有两行a=2吗?告诉我们正确的最终结果,然后有人可以帮助你实现它。 - MJB
1
嗯,原帖作者想要将等于“2”的行变为“3”。 - Strawberry
草莓,是的,在Oracle中您可以不使用order by desc来做到这一点。 - xiaoyunwu
2个回答

3
您可以使用 ORDER BY 来实现此操作:
update table 
set A=A+1
order by A desc

我真的不知道! - Strawberry

3
你之所以收到此错误,是因为你的UPDATE TABLE SET A = A + 1更新第一行(从1变成2),这将与第二行发生冲突,因为已经有一个ID = 2的行存在。
你需要从最后一行开始降序排列,因此你必须将查询更改为以下内容:UPDATE TABLE SET ID = ID + 1 ORDER By ID DESC; DESC子句将使更新从表格底部开始,因此它不会在其路径中找到任何重复的ID...

只是为了记录,我并没有从Ike那里复制那个答案,但他回答得更快,而我还在打字解释为什么会出现那个错误。 :) - SkyHunter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接