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行取得する」という意味になります。この組み合わせはページネーション(ページ送り)処理などでも頻繁に使われるパターンなので、しっかり覚えておきましょう。
-
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コマンドを
-
ApacheとMySQLを連携させる方法|ユーザー認証とログ管理の基本
ApacheとMySQLの連携とは本記事では、Webサーバー「Apache」とデータベース「MySQL」を組み合わせて活用する方法を解説します。Apacheは、Apache Software Foundationによって開発・保守されているWebサーバーソフトウェアです。ユーザーからWebページへのアクセス要求(リクエスト)を受け付け、いくつかのセキュリティチェックを実施したうえで、目的のページへとユーザーを誘導します。MySQLによるユーザー認証MySQLデータベースを使ってユーザー認証を行えるプログラムは数多く存在します。これらのプログラムを利用すれば、アクセスログをMySQLのテーブルに