Oracle ROWNUM

ROWNUMROWID一樣也是一個偽列,按ORACLEbuffer cachedata file中的順序開始計數的。

 

ROWNUM=1也就是讀到的第一條,當這條記錄被刪除ROWNUM將變為其它值。

在謂詞中不允許使用ROWNUM=2,3。。。等(oracle是從rownum=1開始計數的,直接使用rownum=2不行)

 

如果非要取第2條可以用:

SELECT * FROM (SELECT A.*,ROWNUM R FROM EMP A)

WHERE R=2;

 

開發中常用到rownum=1,以提高執行效率(找到第一條就馬上返回結果,不用向下執行)。

其實在oracle10G開始執行計畫才會這樣執行,提高效率

 

ORDER BY排序時,注意寫成:

SELECT * FROM (SELECT A.*,ROWNUM R FROM EMP A

ORDER BY EMP_NO)

WHERE R=1;

请使用浏览器的分享功能分享到微信等