oracle 的 lead()和lag()查詢當前數據的上一條和下一條數據

表 :news 

字段: id  title create_date 

1.查詢當前數據的前一條數據

select  lag(id, 1, null) over(order by  create_date desc) back_id  from news;

2.查詢當前數據的後一條數據

select  lag(id, 1, null) over(order by  create_date desc) next_idfrom news;

3.查詢當前數據和當前數據的前一條和後一條數據

select  res.back_id, res.back_title, res.next_id, res.next_title,news.*
from (select id,
              lag(id, 1, null) over(order by create_date desc) back_id,
              lag(title, 1, null) over(order by create_date desc) back_title,
              lead(id, 1, null) over(order by create_date desc) next_id,
              lead(title, 1, null) over(order by  create_date desc) next_title
                 FROM news  
       )res
left join news  news.id=res.id
where  news.id=#{id}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章