Oracleのtopステートメントの使い方
OracleデータベースにおけるTOP句は、クエリー結果から指定数のレコードを選択するのに使用します。
一般、Oracleデータベースでは直接的にTOP句をサポートしていないため、同様の機能を実現するには、他の方法を利用する必要がある。
一般的な実現方法を以下に示します。
- ROWNUMを利用する: 検索クエリのWHERE句でROWNUM <= Nを利用することで、取得するレコード数を制限できます。Nは取得するレコード数です。
table_nameテーブルの先頭10件のレコードを取得します。
- サブクエリとROWNUMを利用:サブクエリでROWNUMを使って結果セットに行数制限をかけ、外部クエリで必要なフィールドを選択する。
例えば:
SELECT column1, column2
FROM (
SELECT column1, column2
FROM table_name
ORDER BY column1
)
WHERE ROWNUM <= 10;
このクエリはtable_nameテーブルでcolumn1列でソートされた先頭10件のレコードのcolumn1とcolumn2フィールドを返します。
- FETCH FIRSTを用いると、Oracle 12c以降、FETCH FIRST n ROWS ONLY句で先頭n件のレコードを選択できる。
table_nameテーブルのcolumn1列でソートした上位10件のレコードを取得するクエリ
なお、上記のやり方ではTOPキーワードを直接利用していませんが、これはOracleデータベースにはTOPキーワードがもともと用意されていないためです。ただし、ROWNUMやFETCH FIRSTなどの機能を利用することで同様の機能を実現できます。