MySQL - 删除一行并使用正确的排序ID重新排序其他行

时间:2012-02-01 15:03:45

标签: mysql sql

我有一个包含一堆行和 sort_order 的表。我想知道如何做到这一点,所以当我删除一行时,说我删除了一个sort_order为7的突出显示的行。然后我只需要将#8更改为#7 ..#9 #8 ..#10到#9 ..和#11到#10。

enter image description here

这样的事情可能吗?

4 个答案:

答案 0 :(得分:13)

如果您确实需要更改这些值(sort_order仍可使用间隙),您可以

Delete From t
Where sort_order = 7

然后按1减少剩余的条目:

Update t
Set sort_order = sort_order - 1
Where sort_order > 7

答案 1 :(得分:1)

像这样:

Update tablename 
Set sort_order = sort_order - 1 
where sort_order > 7

答案 2 :(得分:1)

DELETE FROM table WHERE sort_order = 7;
UPDATE table SET sort_order = sort_order - 1 WHERE sort_order > 7;

但是,根本没有必要。

答案 3 :(得分:1)

进行这样的重新排序绝对没有意义。 按原样离开你的桌子。

您将为数据库带来不必要的工作负担而没有任何好处。