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

2022-06-05 22:57:17 字數 1625 閱讀 1070

檢視得知,資料庫中用於查詢的字段(主鍵)是不連續的。如上圖所示:stxh為主鍵number型別。

下一條

select nowid, afterid from(

select stxh nowid, lead(stxh,1) over (order by stxh) as afterid from exm_kstk)

where afterid-nowid>0 and nowid = 54;

上一條select beforeid, nowid from(

select stxh beforeid, lead(stxh,1) over (order by stxh) as nowid from exm_kstk)

where nowid-beforeid>0 and nowid = 54;

lead(value_expr [,offset][,default]) over([query_partition_clause] order by order_by_clause)

value_expr:值表示式,通常是字段,也可是是表示式。

offset:偏移,如果》0 表示與當前行相比,向前的行數。預設值為1

default:預設值,偏移結果不存在時,預設的返回值。

select 欄位名 beforeid, lead(在欄位名,偏移量) over (order by 欄位名) as nowid from 表名)
整條的使用就是需要傳入當前的nowid值

首先需要通過當前id獲取上一條記錄id值

select beforeid from

(select stxh beforeid, lead(stxh,1) over (order by stxh) as nowid from exm_kstk)

where nowid-beforeid>0 and nowid = 54;

通過這條sql就拿到上一條的id值了,然後再select查詢即可。

select * from exm_kstk stxh =(

select beforeid from

(select stxh beforeid, lead(stxh,1) over (order by stxh) as nowid from exm_kstk)

where nowid-beforeid>0 and nowid = 54)

直接貼**吧。

select * from exm_kstk stxh =(

select afterid from(

select stxh nowid, lead(stxh,1) over (order by stxh) as afterid from exm_kstk)

where afterid-nowid>0 and nowid = 54)

exm_kstk:表名

stxh:我的表主鍵

54:上文所用到的54就是你需要去傳入的當前已知的id值

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

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

如何查詢不連續的id值

如何查詢不連續的id值 表t有乙個id列,自增型別,用sql如何找出不連續的資料呢?如 t表id列有如下資料,1 2 3 5 6 8 如何找出不連續的資料 4 7 解決方案 select rownum from dual connect by rownum select max id from t ...

oracle關於如何對不連續的開始結束時間進行合併

由於工作需要,需要對一張表的資料進行開始和結束時間的拼接。比如存在以下資料。customer code 111111 sku code abc effective start date 2019 01 01 and effective end date 2019 04 31 customer cod...