如何根据选定的行获取上一行和下一行?

tim*_*ack 1 t-sql sql-server asp.net-mvc-4 sql-server-2012

我正在尝试获取确切的T-SQL语句来获取所选行的上一行和下一行.这是下面给出的表格.

表名:MyExTab

ID      Name     Address       Age    Nationality
------  -------  -----------   -----  -----------
1160    Kate     New Jersey    28     American
1161    Kelly    Connecticut   32     American
1162    Jenny    New York      30     American
1163    Heather  New York      29     American
1164    Ashley   Pennsylvania  29     American
Run Code Online (Sandbox Code Playgroud)

如果我想使用表示行的ID = 1162查询行

ID      Name     Address       Age    Nationality
------  -------  -----------   -----  -----------
1162    Jenny    New York      30     American
Run Code Online (Sandbox Code Playgroud)

它应该只返回基于所选行ID的上一行和下一行的两行,如下所示.

ID      Name     Address       Age    Nationality
------  -------  -----------   -----  -----------
1161    Kelly    Connecticut   32     American
1163    Heather  New York      29     American
Run Code Online (Sandbox Code Playgroud)

请给予帮助.谢谢

Shn*_*ugo 5

试试吧

DECLARE @tbl TABLE(ID INT,Name VARCHAR(100));
INSERT INTO @tbl VALUES
 (1160,'Kate')
,(1161,'Kelly')
,(1162,'Jenny')
,(1163,'Heather')
,(1164,'Ashley');

DECLARE @id INT=1162;
Run Code Online (Sandbox Code Playgroud)

查询将查找给定参数的最小较大最小较小 ID

SELECT * 
FROM @tbl AS t
WHERE ID = (SELECT MIN(x.ID) FROM @tbl AS x WHERE x.ID>@id)
   OR ID = (SELECT MAX(x.ID) FROM @tbl AS x WHERE x.ID<@id)
Run Code Online (Sandbox Code Playgroud)