🔖

【初心者向け】SQLの LIMIT と OFFSET の使い方を解説

に公開

はじめに

SQLで検索結果の一部だけを取り出したいとき、便利なのが LIMITOFFSET です。

特に、ページング処理(「1ページに10件表示」など)では頻繁に使われます。

しかし、次のような疑問を持ったことはないでしょうか?

LIMIT 10 OFFSET 20 の意味がよく分からない」
「なぜ OFFSET を使う必要があるのか?」

本記事では、初心者の方向けに LIMITOFFSET の基本的な使い方を、例を交えて解説します。

0. 前提:users テーブルの例

以下のようなテーブルがあるとします。

id name age
1 Alice 24
2 Bob 29
3 Carol 31
4 Dave 22
5 Eve 27
6 Frank 35
7 Grace 28
8 Hannah 33
9 Ivan 30
10 Julia 26
11 Kevin 21
12 Laura 32

1. LIMIT とは?:取得する件数を制限する

LIMIT は、検索結果から取り出すデータの件数を指定したいときに使います。
例えば「上位10件だけ見たい」といった場合に便利です。

SELECT * FROM users
LIMIT 5;

この場合、users テーブルから 先頭5件 を取得します。

🔽 実行結果:

id name age
1 Alice 24
2 Bob 29
3 Carol 31
4 Dave 22
5 Eve 27

2. OFFSET とは?:取得開始位置をずらす

OFFSET は、どこからデータを取得するか(何件スキップするか) を指定します。

SELECT * FROM users
LIMIT 5 OFFSET 5;

このクエリは:

  • 5件スキップして
  • (6件目から)5件取得します

つまり、6件目~10件目までのデータを取得します。

🔽 実行結果:

id name age
6 Frank 35
7 Grace 28
8 Hannah 33
9 Ivan 30
10 Julia 26

3. 実用例:ページングに使う(1ページ10件表示)

例えば、Webアプリで「ユーザー一覧を10件ずつ表示する」場面を考えてみましょう。

  • 1ページ目 → LIMIT 10 OFFSET 0
  • 2ページ目 → LIMIT 10 OFFSET 10
  • 3ページ目 → LIMIT 10 OFFSET 20

というように、OFFSET = (ページ数 - 1) × 10 で表現できます。

-- 3ページ目(21~30件目)
SELECT * FROM users
ORDER BY id
LIMIT 10 OFFSET 20;

🔸 通常は ORDER BY と組み合わせて、順番が保証されるようにしておきましょう。

4. 注意点

  • LIMIT だけでも使える(先頭から指定した件数だけ取得)
  • OFFSET だけでは使えないLIMIT とセットで使用するのが基本)
  • 大量のデータがある場合は、パフォーマンスに注意(後ろの方のページは読み込みが遅くなることも)

おわりに

LIMITOFFSET は、取得する件数と開始位置をコントロールするための便利な構文です。
特に、Webアプリでのページング処理ではよく使われるため、慣れておくと安心です。

以下のようなイメージで覚えると、混乱しにくくなります。

  • LIMIT 10 → 「最大で10件のデータを取得する」
  • OFFSET 20 → 「最初の20件をスキップして、そこから取得を開始する」

本記事が理解の一助になれば幸いです。


🔗 関連記事

Discussion