在之前的版本中有多種間接手段來對頂部或底部記錄獲取 Top-N 查詢結(jié)果。而在 12c中,通過新的 FETCH FIRST|NEXT|PERCENT 語句簡化了這一過程并使其變得更為直接。
從 EMP 表檢索排名前 10 的工資記錄
SQL> SELECT empno,ename,sal FROM emp ORDER BY SAL DESC FETCH FIRST 10 ROWS ONLY;
EMPNO ENAME SAL
7839 KING 5000
7902 FORD 3000
7566 JONES 2975
7698 BLAKE 2850
7782 CLARK 2450
7499 ALLEN 1600
7844 TURNER 1500
7934 MILLER 1300
7521 WARD 1250
7654 MARTIN 1250
10 rows selected.
原方法
SQL> select * from (SELECT empno,ename,sal FROM emp ORDER BY SAL DESC) where rownum<11 ;
創(chuàng)新互聯(lián)網(wǎng)絡(luò)公司擁有十余年的成都網(wǎng)站開發(fā)建設(shè)經(jīng)驗,上千多家客戶的共同信賴。提供成都做網(wǎng)站、網(wǎng)站設(shè)計、網(wǎng)站開發(fā)、網(wǎng)站定制、友情鏈接、建網(wǎng)站、網(wǎng)站搭建、響應(yīng)式網(wǎng)站開發(fā)、網(wǎng)頁設(shè)計師打造企業(yè)風(fēng)格,提供周到的售前咨詢和貼心的售后服務(wù)
EMPNO ENAME SAL
7839 KING 5000
7902 FORD 3000
7566 JONES 2975
7698 BLAKE 2850
7782 CLARK 2450
7499 ALLEN 1600
7844 TURNER 1500
7934 MILLER 1300
7521 WARD 1250
7654 MARTIN 1250
10 rows selected.
從 EMP 表檢索排名從第2行往后的3行 的工資記錄(不包括第二行)
SQL> SELECT empno,ename,sal FROM emp ORDER BY SAL DESC offset 2 rows fetch next 3 rows only;
EMPNO ENAME SAL
7566 JONES 2975
7698 BLAKE 2850
7782 CLARK 2450
從 EMP 表中獲取排名前 10%的記錄
SQL> SELECT empno,ename,sal FROM emp ORDER BY SAL DESC FETCH FIRST 10 PERCENT rows only;
EMPNO ENAME SAL
7839 KING 5000
7902 FORD 3000
獲取排名前 9的所有相似的記錄
SQL> SELECT empno,ename,sal FROM emp ORDER BY SAL DESC FETCH FIRST 9 ROWS WITH TIES;
EMPNO ENAME SAL
7839 KING 5000
7902 FORD 3000
7566 JONES 2975
7698 BLAKE 2850
7782 CLARK 2450
7499 ALLEN 1600
7844 TURNER 1500
7934 MILLER 1300
7521 WARD 1250
7654 MARTIN 1250
10 rows selected.