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

时间:2015-04-16 10:08:35

标签: sql-server sorting stored-procedures sql-server-2012

目前我正在使用存储过程来更新表的排序顺序。我们的想法是确保交换正确的行。

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

提前致谢

1 个答案:

答案 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