目前我正在使用存储过程来更新表的排序顺序。我们的想法是确保交换正确的行。
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的行放高,此时ID为3 unkown 。我怎样才能获得当前第一 排序顺序更高的行的ID?
样本值:TomoveID = 5,Up = 1
排序后的结果应该是:
ID SortOrder UseForSwap
1 1 Yes
2 NULL No
3 3 Yes
4 NULL No
5 2 Yes
提前致谢
答案 0 :(得分:1)
您可以通过这种方式搜索排名最小的SortOrder,其行数小于ID为5行的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