Oracle DB

FETCH FIRST ... ROWS ONLY

指定件数のみを取得する標準構文(Oracle 12c以降)

解説

Oracle Database(12c以降)で導入された、取得行数を制限するための標準SQL準拠の構文です。MySQLやPostgreSQLにおける LIMIT に相当します。

従来のROWNUMとの違い

Oracle 11g以前では、行数を絞るために WHERE ROWNUM <= 5 という擬似列を使っていました。しかし、ROWNUMはソート(ORDER BY)の前に評価されてしまうため、サブクエリを挟まないと正しいランキングが取れないという大きな罠がありました。FETCH FIRST の登場により、直感的かつ安全にトップN件を取得できるようになりました。

構文
SELECT * FROM 表 ORDER BY 列 DESC FETCH FIRST 件数 ROWS ONLY;
具体例
SELECT * FROM emps_test ORDER BY salary DESC FETCH FIRST 3 ROWS ONLY;

この構文を実際に書いて試してみませんか?

SQLエディタを開く