使用lead lag 查詢上一條記錄 下一條記錄

2021-08-25 13:50:36 字數 902 閱讀 2198

表的結構如下:

staff_no staff_name ***

--------- ----------- ----

001 張三 男

002 李四 男

003 王五 男

如要查詢staffno是002的前一條記錄

select * from staff where staff_no=(select c.p from (select staff_no,lag(staff_no,1,0) over (order by staff_no) as p from staff) c where c.staff_no='002')

結果:staff_no staff_name ***

--------- ----------- ----

001 張三 男

如要查詢其後一條記錄

select * from staff where staff_no=(select c.n from (select staff_no,lead(staff_no,1,0) over (order by staff_no) as n from staff) c where c.staff_no='002')

結果:staff_no staff_name ***

--------- ----------- ----

003 王五 男

查詢第一條

select * from (select s.*,row_number()over(order by staff_no ) rn from staff s) where rn=1 ;

查詢最後一條

select * from (select s.*,row_number()over(order by staff_no desc ) rn from staff s) where rn=1 ;

Mysql 查詢當前資料上一條和下一條的記錄

獲取當前檔案上一條與下一條記錄的原理是上一條的sql語句,從news表裡按從大到小的順序選擇一條比當前id小的新聞,下一條的sql語句,從news表裡按從小到大的順序選擇一條比當前id大的新聞。如果id是主鍵或者有索引,可以直接查詢 方法1 sql view plain copy 1.select ...

Mysql 查詢當前資料上一條和下一條的記錄

獲取當前檔案上一條與下一條記錄的原理是上一條的sql語句,從news表裡按從大到小的順序選擇一條比當前id小的新聞,下一條的sql語句,從news表裡按從小到大的順序選擇一條比當前id大的新聞。如果id是主鍵或者有索引,可以直接查詢 方法1 1.select from table a where i...

Oracle不連續的值,如何實現查詢上一條 下一條

檢視得知,資料庫中用於查詢的字段 主鍵 是不連續的。如上圖所示 stxh為主鍵number型別。下一條 select nowid,afterid from select stxh nowid,lead stxh,1 over order by stxh as afterid from exm kst...