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