為了便於查詢網頁中的數據,常常要分頁顯示。如:要求員工表按工資排序後一次只顯示5行數據,下次再顯示接下來的5行,以下以第二頁數據(6到10行)為例進行分頁。
SQL代碼如下:
SELECT rn, ename, sal FROM (SELECT ROWNUM AS rn, ename, sal FROM (SELECT ename, sal FROM emp WHERE sal IS NOT NULL ORDER BY sal) WHERE ROWNUM <= 10) WHERE rn >= 6;
以上的SQL需要嵌套兩次,你也可以先用row_number()生成序號,再過濾,這樣就只需要嵌套一次。
SELECT rn, ename, sal FROM (SELECT ROW_NUMBER() OVER(ORDER BY sal) AS rn, ename, sal FROM emp WHERE sal IS NOT NULL) WHERE rn BETWEEN 6 AND 10;
這個語句比較簡單,但因為分頁語句的特殊性,在調用PLAN時可能會受到分析函數的影響,有些索引或PLAN(如:first_rows)不能用。所以建議使用第一種分頁方式,把第一種分頁方式當作模版,然後套用。