ROWNUM和ROWID一樣也是一個偽列,按ORACLE從buffer cache或data 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;