我有5行ID:1,2,3,4,5。
然后我提出了一个查询,尝试将这些ID更改为:2,3,4,5,6
Update table set `id` = `id` + 1
然后我得到:
重复录入' 2'关键' PRIMARY'。
我理解这个查询首先由ID 1执行,原因是PRIMARY 2已经存在。
所以我的问题是如何使ID从5到1执行查询。
答案 0 :(得分:2)
创建一个数字从1到100的表num_sample。在列num上定义了一个主键。并写了这个更新
update num_sample set num = num + 1 order by num desc limit 100;
在MySQL中工作得很好。
答案 1 :(得分:0)
没有ORDER BY
和LIMIT
的另一种方法:
SET @MAX_ID = SELECT MAX(ID) FROM YOUR_TABLE;
UPDATE YOUR_TABLE
SET ID = ID + @MAX_ID
UPDATE YOUR_TABLE
SET ID = ID - @MAX_ID - 1