2016-04-25 103 views
1

我有5行ID:1,2,3,4,5。如何使执行更新反向查询MySQL通过ID?

然后我做了一个查询来尝试这些ID更改为:2,3,4,5,6

Update table set `id` = `id` + 1 

然后我得到:关键

重复条目'2'主'。

我明白这个查询首先由ID 1执行,原因是PRIMARY 2已经存在。

所以我的问题是,如何让查询已被执行的ID从5到1

+2

你应该尝试'ORDER BY ID DESC',看看它是否工作 –

+0

@Tin陈德良,它会工作。 – MontyPython

+0

非常感谢。这很简单,但我想不到 –

回答

2

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

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

在MySQL中工作绝对好。

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