OracleでROWNUMを使用する方法を教えてください。
OracleではROWNUMという擬似列があり、この列はクエリの結果セットの各行に自動で一意の番号を割り当てます。ROWNUMの使い方は次のとおりです。
- ROWNUMを使用する問合せ
SELECT *
FROM table_name
WHERE ROWNUM <= 10;
上記のクエリは、テーブル内の最初の 10 件のレコードを返します。
- 行番号を使用してサブクエリを利用する:
SELECT *
FROM (SELECT *
FROM table_name
ORDER BY column_name)
WHERE ROWNUM <= 10;
先述のクエリは、その列でソートされたテーブルの最初の10個のレコードを返します。
- ROWNUMとORDER BYを併用する
SELECT *
FROM table_name
WHERE ROWNUM <= 10
ORDER BY column_name;
上述のクエリ文はテーブル内の最初の 10 件のレコードを返し、指定された列順序を使用して並べ替えます。
ROWNUMの値はクエリ結果が返される前に生成されるため、ROWNUMによるフィルタリングを行うときは、あらかじめソート操作を行い、その後でROWNUMによるフィルタリングを行うことで、結果の精度を担保する必要があります。