假设我有这张表,
ID Name Order
======== ======== =========
1 d 1
2 g 2
3 b 3
4 f 4
5 a 5
现在,我的UI用户可以通过拖放更改订单。例如,他可以将项目d移动到项目的位置。那我的桌子就像是,
ID Name Order
======== ======== =========
2 g 1
3 b 2
4 f 3
1 d 4
5 a 5
任何人都可以告诉我SQL吗?我输入了ID,OldOrder和NewOrder。
答案 0 :(得分:6)
您甚至不需要ID
参数。
UPDATE
yourTable
SET
Order = (CASE WHEN Order = @oldOrder THEN @newOrder
WHEN @newOrder > @oldOrder THEN Order - 1
ELSE Order + 1 END)
WHERE
Order BETWEEN @oldOrder AND @newOrder
OR Order BETWEEN @newOrder AND @oldOrder