获取高于当前值的第一个值(存储过程)
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
目前我正在开发一个存储过程来更新 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