天天看點

Oracle 中rownum的用法

選擇表中的某一行記錄:(了解:rownum是oracle系統順序配置設定為從查詢傳回的行的編号)

select * from (select rownum a,t.* from testtab t) where a=2;

select * from (select rownum a,t.* from testtab t) where a=3;

select * from (select rownum a,t.* from testtab t) where a=4;

不能為:

select * from (select rownum,t.* from testtab t) where rownum=2;或

select * from testtab where rownum=2;

傳回多行記錄:

select * from testtab where rownum<=10;

傳回某段記錄:(如取記錄表中4-10行)

select * from (select rownum no,testtab.* from testtab where rownum<=10) where no>=4;

傳回有條件且經過排序的某段記錄:

select rownum num1,tt.* from

(select rownum num,t.* from

(select EcodeInfo.* from EcodeInfo where a=1 order by ecode desc) t) tt

where num>19 and rownum<20>

以為oracle是先提取記錄再排序的,而oracle的rownum是在提取記錄就已經生成,它先于排序操作,是以必須使用子查詢先排序。

select * from tsettab where rownum>10;

傳回最後一行記錄:

select * from (select rownum a,t.* from testtab t) where a=(select count(*) from testtab);

傳回最後N行記錄:

select * from (select rownum a,t.* from testtab t) where a=(select count(*)-N from testtab);

----------------

 select   *   from   adminrole   where   rownum<=4

  minus  

  select   *   from   adminrole   where   rownum<2>

 select * from

  (select rownum row_id ,b.* from (select a.* from sorttable a order by sortid)b) 

 where row_id between 5 and 9;