根据带有序列的表中任何行的主键获取下一行的最佳方法



我有这样的表格

ID    Name    Sequence
--------------------------
45    Alex       1
22    John       2
2     Philip     3
65    Shine      4
356   Stephy     5
35    Tom        6

还行。。在这里,当我传递 ID 2 时,我应该得到Shine行,因为这是基于 Philip (2) 之后的序列的下一行

哪个是最好的解决方案?

这能做到你想要的吗?

select top 1 t.*
from table t
where sequence > @id
order by sequence;
select top 1
    t.*
from
    myTable t
where
    sequence > @param
order by sequence

我找到了自己问题的答案。它可能对我这样的初学者有所帮助,但仅在SQL 2012中可用

从中选择 *(选择 ID,姓名, LAG(ID,1) 超过(按顺序排序) 上一页ID,LEAD(ID,1) 结束(按序列排序) 下一个ID,序列 FROM tbl) 作为我的表,其中 previd=3

这将返回

ID    Name    Sequence
--------------------------
65     Shine       4

最新更新