如何通过id进行执行更新反向查询mysql?

时间:2016-04-25 04:06:58

标签: mysql

我有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执行查询。

2 个答案:

答案 0 :(得分:2)

创建一个数字从1到100的表num_sample。在列num上定义了一个主键。并写了这个更新

update num_sample set num = num + 1 order by num desc limit 100;

在MySQL中工作得很好。

答案 1 :(得分:0)

没有ORDER BYLIMIT的另一种方法:

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