rownumの基本的な使い方
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は1ページに表示される行数です。
- ROWNUMを使用して、WHERE句を除外して重複データを削除します:
DELETE FROM テーブル名 WHERE rowid NOT IN(SELECT MIN(rowid) FROM テーブル名 GROUP BY column_name); - このクエリは、ROWNUMを使用してテーブル内の重複データを削除します。最初に、内部のSELECT文は、GROUP BY句とMIN関数を使用して、各重複データグループの最小のrowidを見つけます。その後、外部のDELETE文は、これらの最小のrowidを除外することで、重複データを削除します。