在Oracle數據庫中,ROWNUM是一個偽列(pseudocolumn),它表示查詢結果集中行的編號
以下是使用ROWNUM的一些常見場景:
限制查詢結果的行數:
如果你只想獲取查詢結果的前N行,可以使用ROWNUM。例如,要獲取前10行數據,可以使用以下查詢:
SELECT * FROM (
SELECT your_table.*, ROWNUM AS rn
FROM your_table
) WHERE rn <= 10;
分頁查詢:
使用ROWNUM進行分頁查詢時,需要注意ROWNUM在查詢過程中是遞增的。因此,為了實現分頁功能,我們需要先對數據進行排序,然后再根據ROWNUM篩選出所需的行。以下是一個簡單的分頁查詢示例,獲取第2頁(每頁10行)的數據:
SELECT * FROM (
SELECT your_table.*, ROWNUM AS rn
FROM your_table
ORDER BY some_column
) WHERE rn BETWEEN 11 AND 20;
刪除重復行:
如果你想從表中刪除重復的行,可以使用ROWNUM和GROUP BY子句。以下是一個示例,刪除表中重復的行:
DELETE FROM your_table
WHERE ROWID NOT IN (
SELECT MIN(ROWID)
FROM your_table
GROUP BY column1, column2, ...
);
請注意,ROWNUM的使用有一些限制,例如不能直接在WHERE子句中使用ROWNUM進行篩選。在這種情況下,你需要使用子查詢或者其他方法來實現相應的功能。