ROWNUM是一個可以用來返回結果集中的行號的偽列。在Oracle中,ROWNUM是在數據被檢索出來之后才被分配的,因此無法在WHERE子句中直接使用。以下是ROWNUM的基本用法:
返回前N行數據: SELECT * FROM table_name WHERE ROWNUM <= N;
分頁查詢: SELECT * FROM (SELECT t.*, ROWNUM row_num FROM (SELECT * FROM table_name ORDER BY column_name) t WHERE ROWNUM <= (start + page_size)) WHERE row_num > start;
這個查詢先對結果集進行排序,然后使用ROWNUM進行分頁查詢。其中start是起始行的索引,page_size是每頁顯示的行數。
使用ROWNUM和排除WHERE子句來刪除重復數據: DELETE FROM table_name WHERE rowid NOT IN(SELECT MIN(rowid) FROM table_name GROUP BY column_name);
這個查詢使用ROWNUM來刪除表中的重復數據。首先,內部的SELECT語句通過GROUP BY子句和MIN函數來找到每個重復數據組的最小rowid。然后,外部的DELETE語句使用ROWNUM排除了這些最小rowid,從而刪除了重復數據。