LIMIT / FETCH FIRST の使い方

件数を絞る

書き方

… LIMIT n [OFFSET m]
… FETCH FIRST n ROWS ONLY

先頭から n 行だけ返します。ORDER BY と組み合わせて上位 n 件に。FETCH FIRST は標準 SQL の書き方です。

よく使うオプション

オプション意味
LIMIT n先頭から n 行だけ返す(PostgreSQL・MySQL)
OFFSET m先頭の m 行を飛ばす
FETCH FIRST n ROWS ONLY標準 SQL の書き方(PostgreSQL・Oracle 12c 以降)

例

SELECT name, salary FROM employees ORDER BY salary DESC LIMIT 3;

給与の高い上位 3 人を出します。ORDER BY で並べてから絞るのが決まった形です。

SELECT id, total FROM orders ORDER BY id LIMIT 10 OFFSET 20;

21 件目から 30 件目を出します。1 ページ 10 件で 3 ページ目を出すときの形です。

SELECT id, total FROM orders ORDER BY total DESC FETCH FIRST 5 ROWS ONLY;

金額の大きい注文 5 件を、標準 SQL の書き方で出します。Oracle でもこの形が使えます。

SELECT * FROM customers LIMIT 5;

表の中身を少しだけ見たいときの形です。大きな表をうっかり全部出さずに済みます。

よくある間違い・注意

  • ORDER BY が無いと、どの行が選ばれるかは決まりません。上位 n 件が欲しいときは必ず並べます。
  • Oracle(11g まで)には LIMIT がありません。FETCH FIRST か ROWNUM を使います。
  • OFFSET が大きいと、飛ばす行も読むので遅くなります。

実際に打って練習する

SQL コースの Lv7「件数を絞る LIMIT」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

Lv1〜3 は、登録不要・無料で遊べます(それより先はブロンズ以上のプランで遊べます)。

SQL 構文一覧(使い方と例)へ戻る