oracle の limit 句の使い方は?
Oracleでは、検索結果の返される行数を制限するために使用されるLIMITキーワードはROWNUMと呼ばれます。
「ROWNUM」を「SELECT」文で使うときは、「ORDER BY」節と併用して返される行を特定の順に並び替えることができます。以下に「ROWNUM」で結果行数を制限する例を示します。
SELECT column1, column2
FROM table
WHERE condition
ORDER BY column1
AND ROWNUM <= 10;
上の例のクエリは、条件を満たす行の上位 10 行を、column1 列でソートして返します。
ROWNUM は、検索結果が返される前までに割り当てられる疑似列であることに注意してください。したがって、ROWNUM を使用してページング検索を実行したい場合は、最初に副問い合わせを使用して行番号を結果に割り当て、その後で結果をフィルタリングする必要があります。以下に、ページング検索の例を示します。
SELECT *
FROM (
SELECT column1, column2, ROWNUM as row_num
FROM table
WHERE condition
ORDER BY column1
)
WHERE row_num BETWEEN 11 AND 20;
上記のクエリは条件を満たす11行目から20行目の結果が返されます。
Oracle 12c以上のバージョンでは、FETCH FIRST/NEXT構文が導入されたことにより、より直接的にクエリの結果行数を制限できる。以下は、FETCH FIRST構文を使用する例である。
SELECT column1, column2
FROM table
WHERE condition
ORDER BY column1
FETCH FIRST 10 ROWS ONLY;
上記クエリは、条件を満たす上位10行の結果を返します。