LEAD()
函数,它按照指定的顺序选择下一个值,如下所示:
注意,LEAD
仅适用于 SQL Server 2012+。SELECT s.id,s.name,s.number
FROM (
SELECT t.*
LEAD(t.id,1) OVER(ORDER BY t.Number DESC) as Next_val,
LEAD(t.id,1) OVER(ORDER BY t.Number) as Last_val
FROM YourTable t) s
WHERE 4 IN(s.id,next_Val,s.last_val)
4
替换为你想要的ID
或参数。ID
,以及最接近的上下值所属的ID
,然后检查其中是否有你想要的ID
。lead
两次有什么关系呢?一个是按desc
排序,另一个是按asc
排序。我会添加一个版本说明的注释 :) - sagideclare @id int = 4
select sn.*
from table sn
inner join
(
select top 2 sn_prev.*
from table sn_prev
where id <= @id
order by id desc
) sp on sp.id= sn.id
union
select sn.*
from table sn
inner join
(
select top 1 sn_prev.*
from table sn_prev
where id > @id
order by id
) sp on sp.id = sn.id
你可以在SQL中使用MIN()和MAX()函数。