Oracleのtopステートメントの使い方

OracleデータベースにおけるTOP句は、クエリー結果から指定数のレコードを選択するのに使用します。

一般、Oracleデータベースでは直接的にTOP句をサポートしていないため、同様の機能を実現するには、他の方法を利用する必要がある。

一般的な実現方法を以下に示します。

  1. ROWNUMを利用する: 検索クエリのWHERE句でROWNUM <= Nを利用することで、取得するレコード数を制限できます。Nは取得するレコード数です。

table_nameテーブルの先頭10件のレコードを取得します。

  1. サブクエリとROWNUMを利用:サブクエリでROWNUMを使って結果セットに行数制限をかけ、外部クエリで必要なフィールドを選択する。

例えば:
SELECT column1, column2
FROM (
SELECT column1, column2
FROM table_name
ORDER BY column1
)
WHERE ROWNUM <= 10;
このクエリはtable_nameテーブルでcolumn1列でソートされた先頭10件のレコードのcolumn1とcolumn2フィールドを返します。

  1. FETCH FIRSTを用いると、Oracle 12c以降、FETCH FIRST n ROWS ONLY句で先頭n件のレコードを選択できる。

table_nameテーブルのcolumn1列でソートした上位10件のレコードを取得するクエリ

なお、上記のやり方ではTOPキーワードを直接利用していませんが、これはOracleデータベースにはTOPキーワードがもともと用意されていないためです。ただし、ROWNUMやFETCH FIRSTなどの機能を利用することで同様の機能を実現できます。

bannerAds