首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Oracle 分頁查詢技巧:使用 ROWNUM 正確限制結果集範圍

     編輯:PHP 相關知識

ROWNUM 偽列特性

Oracle 無 LIMIT,使用 ROWNUM 但需注意:ROWNUM 在 WHERE 子句中只能用 < 或 <=,不能直接用 > 或 BETWEEN。

錯誤寫法

-- 無結果返回
SELECT * FROM table WHERE ROWNUM > 90 AND ROWNUM < 100;

原因:Oracle 先分配 ROWNUM=1,發現不滿足 >90 直接丟棄,後續行永遠得不到 ROWNUM=2...,導致無行滿足條件。

正確分頁寫法 (集合差集)

SELECT * FROM table WHERE ROWNUM < 101
MINUS
SELECT * FROM table WHERE ROWNUM < 91;

即取前 100 行減去前 90 行,得到第 91-100 行。

現代替代 (Oracle 12c+)

SELECT * FROM table
OFFSET 90 ROWS FETCH NEXT 10 ROWS ONLY;

理解 ROWNUM 分配機制是編寫高效分頁 SQL 的前提。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved