Oracle中的Rownum 欄位

tolywang發表於2006-05-11
選擇表中的某一行記錄:(理解:rownumoracle系統順序分配為從查詢返回的行的編號)


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是先提取記錄再排序的,而oraclerownum是在提取記錄就已經生成,它先於排序操作,所以必須使用子查詢先排序。不能為:
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);

SQL> select * from t1 where rownum =2;未選定行
SQL> select * from t1 where rownum =1;
SERIAL1 P
-------------------- -
1
rownum =1以外所有的 =2 =3都提示未選定行,why ?

rownum是給查詢出來的值給一個行號,沒有1就不會有2,3及以後的

是啊,看樣子很多人還是不理解,老有人說早知道吃第三個餅會飽的話,就不該吃第一、二個了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-84377/,如需轉載,請註明出處,否則將追究法律責任。

相關文章