Oracle中的ROWNUM是一個偽列,用于表示查詢結果中行的編號。它可以在多種場景下使用,以下是一些常見的例子:
SELECT * FROM emp WHERE ROWNUM <= 5 ORDER BY sal DESC;
SELECT * FROM (SELECT e.*, ROWNUM rn FROM emp e WHERE ROWNUM <= 10) WHERE rn >= 6;
DELETE FROM emp WHERE ROWID IN (
SELECT ROWID FROM (
SELECT ROWID, ROW_NUMBER() OVER (PARTITION BY ename ORDER BY ROWID) rn FROM emp
) WHERE rn > 1
);
SELECT ROWNUM, empno, ename, sal FROM emp ORDER BY sal DESC;
需要注意的是,ROWNUM在WHERE子句中使用時,會在查詢過程中動態計算,這可能導致預期之外的結果。因此,在使用ROWNUM進行分頁查詢等操作時,建議將其與子查詢結合使用,以確保正確的結果。