MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのLIMITとOFFSET:どの行が返されるのか具体例で解説

MySQLでは、LIMIT 4 OFFSET 6 のように指定すると、先頭の6行がスキップされ、その後の最大4行が返されます。つまり、7行目・8行目・9行目・10行目の4行が取得されることになります。

検証用テーブルの作成

まず、LIMITとOFFSETの動作を確認するためのサンプルテーブルを作成しましょう。

mysql> create table LimitOffsettable
    -> (
    -> Id int
    -> );
Query OK, 0 rows affected (0.60 sec)

テストデータの挿入

続いて、Id列に1から13までの値を挿入します。

mysql> insert into LimitOffsettable values(1),(2),(3),(4),(5),(6),
    -> (7),(8),(9),(10),(11),(12),(13);
Query OK, 13 rows affected (0.20 sec)
Records: 13  Duplicates: 0  Warnings: 0

登録データの確認

SELECT文を使って、挿入されたすべてのレコードを表示してみます。

mysql> select * from LimitOffsettable;

実行結果は以下のとおりです。

+------+
| Id   |
+------+
| 1    |
| 2    |
| 3    |
| 4    |
| 5    |
| 6    |
| 7    |
| 8    |
| 9    |
| 10   |
| 11   |
| 12   |
| 13   |
+------+
13 rows in set (0.00 sec)

LIMIT 4 OFFSET 6 を実行する

それでは、実際に LIMIT 4 と OFFSET 6 を指定してクエリを実行してみましょう。

mysql> select * from LimitOffsettable LIMIT 4 OFFSET 6;

実行結果は以下のとおり、7行目から10行目までの4行が返されます。

+------+
| Id   |
+------+
| 7    |
| 8    |
| 9    |
| 10   |
+------+
4 rows in set (0.00 sec)

まとめ

LIMITとOFFSETの役割は以下のように整理できます。

  • OFFSET:返される行の前にスキップする行数を指定する
  • LIMIT:スキップ後に返す最大行数を指定する

つまり「LIMIT 4 OFFSET 6」は「6行飛ばして、そこから4行取得する」という意味になります。この組み合わせはページネーション(ページ送り)処理などでも頻繁に使われるパターンなので、しっかり覚えておきましょう。

  1. MySQLで重複行を除外して1行だけ取得する方法(DISTINCTの使い方)

    MySQLで重複行から1行のみを返すには?MySQLのテーブルに同じ値を持つ重複行が存在する場合、DISTINCTキーワードを使うことで、重複を排除した一意な行だけを取得できます。この記事では、実際にテーブルを作成し、データを挿入したうえで、DISTINCTによる重複除去の手順を解説します。1. テーブルを作成するまず、サンプル用のテーブルを作成します。mysql> create table DemoTable1998 ( Name varchar(20) ); Query OK, 0 rows affected (0.61 sec)2. レコードを挿入するINSERTコマンドを

  2. ApacheとMySQLを連携させる方法|ユーザー認証とログ管理の基本

    ApacheとMySQLの連携とは本記事では、Webサーバー「Apache」とデータベース「MySQL」を組み合わせて活用する方法を解説します。Apacheは、Apache Software Foundationによって開発・保守されているWebサーバーソフトウェアです。ユーザーからWebページへのアクセス要求(リクエスト)を受け付け、いくつかのセキュリティチェックを実施したうえで、目的のページへとユーザーを誘導します。MySQLによるユーザー認証MySQLデータベースを使ってユーザー認証を行えるプログラムは数多く存在します。これらのプログラムを利用すれば、アクセスログをMySQLのテーブルに