在 SQL Server 中删除记录后如何重新排序记录(SortOrder 列)?

Eri*_*ric 2 sql sql-server

我想知道删除记录后重新排序记录的最有效方法是什么。基本上我有类似(ItemID,SortOrder)的东西。所以当我删除一个项目时,SortOrder 列将不再是增量的。我想重新编号排序顺序,以便数字再次递增。

我在想也许我可以用 RANK 功能来做到这一点……但我不太确定该怎么做。

Ada*_*son 6

如果您使用的是支持 T-SQL 的东西(即不是 Compact Edition),那么这应该可以工作。

假设您的表已命名Item并且订单当前是增量的(无间隙),

declare @SortOrder int

select @SortOrder = SortOrder from Item where ItemID = @ItemID

update Item set SortOrder = SortOrder - 1 where SortOrder > @SortOrder

delete Item where ItemID = @ItemID
Run Code Online (Sandbox Code Playgroud)