🗃️SQLLearn
SQL基礎 レッスン6

LIMIT・OFFSET

取得件数を制限し、開始位置を指定してデータを取得する方法を学びます。

LIMITとは

LIMIT句は、SELECTクエリが返す行数を制限します。 大きなテーブルから数件だけ確認したいとき、または一覧ページのように表示件数を制限したいときに使います。 LIMITに0を指定すると0件、省略するとすべての行が返されます。

  • LIMIT n — 最大n行を返す
  • LIMIT 0 — 0行を返す(スキーマ確認に便利)
  • ORDER BYと組み合わせて「上位N件」を取得するパターンが多い

OFFSETとは

OFFSET句は、結果の先頭からスキップする行数を指定します。 LIMITと組み合わせることでページネーション(ページング)を実現できます。 例えば「11件目から10件を取得」は LIMIT 10 OFFSET 10 と書きます。

  • LIMIT n OFFSET m — m行スキップしてn行取得
  • ページ番号をpとするとOFFSET = (p-1) × 件数
  • 大きなOFFSETは処理が遅くなる場合がある

例1: 最初の3件を取得

テーブル定義
CREATE TABLE products (id INTEGER, name TEXT, price INTEGER);
INSERT INTO products VALUES (1, 'りんご', 150);
INSERT INTO products VALUES (2, 'バナナ', 80);
INSERT INTO products VALUES (3, '牛乳', 200);
INSERT INTO products VALUES (4, 'チーズ', 350);
INSERT INTO products VALUES (5, 'みかん', 100);
SQLエディタ

例2: OFFSETで開始位置を指定

テーブル定義
CREATE TABLE products (id INTEGER, name TEXT, price INTEGER);
INSERT INTO products VALUES (1, 'りんご', 150);
INSERT INTO products VALUES (2, 'バナナ', 80);
INSERT INTO products VALUES (3, '牛乳', 200);
INSERT INTO products VALUES (4, 'チーズ', 350);
INSERT INTO products VALUES (5, 'みかん', 100);
SQLエディタ

例3: ORDER BYとLIMITで上位N件

テーブル定義
CREATE TABLE products (id INTEGER, name TEXT, price INTEGER);
INSERT INTO products VALUES (1, 'りんご', 150);
INSERT INTO products VALUES (2, 'バナナ', 80);
INSERT INTO products VALUES (3, '牛乳', 200);
INSERT INTO products VALUES (4, 'チーズ', 350);
INSERT INTO products VALUES (5, 'みかん', 100);
SQLエディタ