Oracleのrownum理解とページングクエリの

1743 ワード

一、rownumは偽の列で、戻りデータに基づいて自動的に数字を生成しますが、この偽の列の特殊性は、使用するときに以下の点に注意する必要があります.
1、偽列を表示するには必ず書かなければならない.つまりselectに置く.
2、rownumは永遠に1から始まり、行番号はしか使用できません、>=;
oracleデータベースは行式データベースで、第1行を取ってから第2行を取ることができて、第2行を取ってから第3行を取ることができます.....oracleの中でrownumは永遠に1から始まるので、rownumは使用できません>、>=(例えば:8階建てで、1234階も蓋がなくて、どうして5678を覆うことができますか?)

3、rownum , ;

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

の は っていますが、 の の 3つを るだけです. のsql を に す(ソート なし)
select rownum,empno,ename,sal
     from emp;

に、テーブルをソートします.
select rownum,empno,ename,sal
     from emp order by sal desc;

は、rownumがソートによって されないことを します.
では、サブクエリを うのが しいです.
 select * 
    from (select rownum,empno,ename,sal 
    from emp 
    order by sal desc)
    Where rownum<=3;//   rownum        ,        ;

、rownumを してページングクエリーを う
:
select r,empno,ename,sal from 
(select rownum r,empno,ename,sal from  
(select  rownum,empno,ename,sal
    from emp
    order by sal desc) e1
  where rownum<=8) e2
where r>=5;// :   r  e2    ,   e2    ,  e2     ,      >=