日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Oracle中的基本分頁查詢 - 微醉星辰 - JavaEye技術網(wǎng)站

 ookkhh 2011-01-05

在Oracle中,分頁有兩種方式:rownum和row_number。

現(xiàn)有以下兩張表:

DEPT: DEPTNO,DNAME,LOC

EMP: EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO

 

rownum必須從1開始,記錄查詢出來之后又會從1開始,如:

Sql代碼
  1. --這樣做能成功獲得結(jié)果  
  2. select rownum,e.* from emp e where rownum<=3;  
  3. --這樣做時沒辦法獲得結(jié)果的  
  4. select rownum,e.* from emp e where rownum>=2 and rownum<=5;  
  5. --解決辦法是在子查詢中先生成行號,如:  
  6. SELECT * FROM (SELECT ROWNUM r,e.* FROM emp e) a  
  7. WHERE r>=4 AND r<=6  

使用rownum不能直接排序的原因是rownum在order by 之前生成,所以必須先排序,如:

 

現(xiàn)需要查詢出第二頁記錄(按hiredate倒序,每頁顯示10條記錄)

1.使用rownum分頁:

Sql代碼
  1. SELECT b.* FROM (  
  2. SELECT ROWNUM r,a.* FROM (  
  3. SELECT * FROM emp ORDER BY hiredate DESC) a ) b  
  4. WHERE b.r>=11 AND b.r<=20  

2.使用row_number解析函數(shù)分頁:

Sql代碼
  1. SELECT b.* FROM (  
  2. SELECT row_number() over (ORDER BY hiredate DESC) r,x.* FROM emp x ) b  
  3. WHERE b.r>=11 AND b.r<=20  

在這里注意的是使用解析函數(shù)row_number的效率比使用rownum的效率高。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多