[SQL] SQL依照你的排序條件 找出目前資料的前一筆與下一筆。 Find Pre and Next DataRows of current Datarow by your order condition
有時候需要用SQL找出前一筆跟後一筆資料
用SQL的TOP是沒有辦法做到
這個時候就可以這個語法
select * from (
SELECT TOP 1 *
FROM [Article]
where Poid<{CurrentPoid}
order by CreateDate desc) t
union
select * from (
SELECT TOP 1 *
FROM [[Article]
where Poid>{CurrentPoid}
order by CreateDate ASC) t2
找出目前PK id前一個與後一個的資料(依照想要排序順序)
那如果指示想要一個資料行呈現的話
可以改用下面的SQL語法 讓這兩筆資料join在同一筆
select Pre.*,Nex.* from
(SELECT TOP 1 * ,1 tID
FROM [dbo].[Article]
where Poid<{CurrentPoid}
order by CreateDate desc)
Pre left join
(SELECT TOP 1 * ,1 tID
FROM [dbo].[Article]
where Poid>{CurrentPoid}
order by CreateDate ASC) Nex on Pre.tID=Nex.tID
留言