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エディタ