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 は、登録不要・無料で遊べます(それより先はブロンズ以上のプランで遊べます)。