use*_*567 1 sql sql-server sql-server-2008
假设我有这张桌子,
ID Name Order
======== ======== =========
1 d 1
2 g 2
3 b 3
4 f 4
5 a 5
Run Code Online (Sandbox Code Playgroud)
现在,从我的UI用户可以通过拖放更改顺序.例如,他可以将项目d移动到项目的位置.那我的桌子看起来像,
ID Name Order
======== ======== =========
2 g 1
3 b 2
4 f 3
1 d 4
5 a 5
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我SQL吗?我输入了ID,OldOrder和NewOrder.
你甚至不需要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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
189 次 |
| 最近记录: |