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,从而删除了重复数据。