ROWNUM是一个可以用来返回结果集中的行号的伪列。在Oracle中,ROWNUM是在数据被检索出来之后才被分配的,因此无法在WHERE子句中直接使用。以下是ROWNUM的基本用法:
-
返回前N行数据: SELECT*FROMtable_nameWHEREROWNUM<=N;
-
分页查询: SELECT*FROM(SELECTt.*,ROWNUMrow_numFROM(SELECT*FROMtable_nameORDERBYcolumn_name)tWHEREROWNUM<=(start+page_size))WHERErow_num>start;
这个查询先对结果集进行排序,然后使用ROWNUM进行分页查询。其中start是起始行的索引,page_size是每页显示的行数。
-
使用ROWNUM和排除WHERE子句来删除重复数据: DELETEFROMtable_nameWHERErowidNOTIN(SELECTMIN(rowid)FROMtable_nameGROUPBYcolumn_name);
这个查询使用ROWNUM来删除表中的重复数据。首先,内部的SELECT语句通过GROUPBY子句和MIN函数来找到每个重复数据组的最小rowid。然后,外部的DELETE语句使用ROWNUM排除了这些最小rowid,从而删除了重复数据。