Oracle-11g
選擇不存在較小行的行
考慮下表數據:
ID NAME 1 Kshitiz 2 Aman 5 Aakash 6 Manjeet
這裡缺少 2 到 5 之間的記錄。我可以使用什麼查詢來選擇此表中的第 5 行?
Oracle 支持
LAG
,所以你應該能夠做類似的事情。SELECT T.ID, T.NAME FROM ( SELECT ID, NAME, LAG(ID) OVER (ORDER BY ID) AS PREVID FROM YourTable ) T WHERE ID > PREVID + 1;
將 Id 與前一個 Id 進行比較,僅返回間隙大於 1 的 Id。
(未經測試,因為當我嘗試創建 Oracle Fiddle 時,SQL Fiddle 目前正在返回錯誤)
SELECT p2.ID, p2.NAME FROM person p1 INNER JOIN person p2 ON p1.ID = p2.ID+1 WHERE p1.ID <> p2.ID AND p2.ID <> 1
您可以自行加入表格
ID = ID+1
僅當
AND p2.ID <> 1
1 是 ID 列中的最小值時才應存在。