• <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • Oracle教程
    Oracle練習題

    Oracle Rownum用法

     

     

    Oracle提供了rownum,rownum是一個隱含的(查詢結果集)字段,rownum是一個行號,從1開始。

     

     

    rownum隱含字段

     

    select rownum, a.* from emp a;

     

     

     

    取得前5條數據

     

    select * from emp where rownum <=5;

     

     

     

    取得大與第5條的所有數據

     

    select * from emp where rownum >5;

     

    以上語句,oracle不支持,oracle只支持rownum小于或小于等于的運算, 不支持大于或大于等于的運算。

     

     

    取得薪水最好的前5名

     

    select rownum, empno, ename, sal from emp where rownum<=5 order by sal desc;

     

     

    上面的結果不正確,因為采用order by不會改變rownum,rownum的值在數據插入到表中時已經形成,正確使用的方式,將排序好的數據作為一張表來使用,這樣這個表的rownum是新形成的,所以可以保證它的順序是正確的,如下:

     

    select empno, ename, sal 
    from (select empno, ename, sal from emp order by sal desc)
    where rownum <=5

     

     

     

    采用rownum進行分頁

     

    分頁主要是為了提高效率,一般采用數據庫的機制比較多,主要從數據庫表中定位記錄的開始位置結束位置,如每頁兩條數據:

     

    第一頁:記錄1~2

     

    第二頁:記錄3~4

     

    。。。。。。。

     

    因為rownum存在問題,所以需要采用三層的select嵌套完成分頁,嵌套的目的將rownum轉換成我們自己的字段,如:

     

    select empno, ename, sal
    from 
    (
     select rownum r, empno, ename, sal 
     from 
      (
       select empno, ename, sal from emp order by sal desc
      )    
      where rownum <=5 
    )where r>0

     

    通用的分頁方法,使用的時候可以直接拷貝。只需要修改紅色字體的部分就可以了。

     

    select *
    from 
    (
     select rownum r, t.* 
     from 
      (
        任意的SQL語句
      )  t  
      where rownum <=結尾的行號 
    )where r>開始的行號

     

     

    全部教程
  • <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • 面对面棋牌游戏