获取高于当前值的第一个值(存储过程)

Get first value above current (stored procedure)

目前我正在开发一个存储过程来更新 table 的排序顺序。这个想法是为了确保交换正确的行。

INPUT: ToMoveID INT, Up BIT (1 up, 0 down)

服务器:MSSQL 2012

使用示例:

ID  SortOrder   UseForSwap
1   1           Yes
2   NULL        No
3   2           Yes
4   NULL        No
5   3           Yes

思路是把ID为5的行放高一点,3的ID此时未知。我怎样才能得到 te first sortorder 比当前更高的行的 ID?

示例值:TomoveID = 5,Up = 1

排序后的结果应该是:

ID  SortOrder   UseForSwap
1   1           Yes
2   NULL        No
3   3           Yes
4   NULL        No
5   2           Yes

提前致谢

可以这样查找比ID 5行的SortOrder最大的SortOrder的行:

SELECT TOP 1
    tbl.ID
FROM YourTable tbl
WHERE tbl.SortOrder < (SELECT SortOrder FROM YourTable tbl2 WHERE tbl2.ID = 5)
ORDER BY
    tbl.SortOrder DESC