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

MySQLでLIMIT句を使ってページネーション(次の行)を取得する方法

MySQLでページネーション(特定の範囲の行だけを取得すること)を実現したい場合は、LIMIT句を使用します。LIMIT句では「開始位置(オフセット)」と「取得する行数」を指定できるため、大量のデータの中から必要な部分だけを効率よく取り出せます。

この記事では、実際にテーブルを作成し、データを挿入したうえで、次の行を取得するページネーションの具体的な手順を解説します。

1. サンプルテーブルを作成する

まずはデモ用のテーブルを作成しましょう。以下のSQLでは、自動採番されるidカラムと名前を格納するnameカラムを持つテーブル「demo40」を定義しています。

mysql> create table demo40
-> (
-> id int not null auto_increment primary key,
-> name varchar(40)
-> );
Query OK, 0 rows affected (1.73 sec)

2. テーブルにレコードを挿入する

続いて、INSERT文を使ってサンプルデータを登録します。

mysql> insert into demo40(name) values('Chris');
Query OK, 1 row affected (0.23 sec)

mysql> insert into demo40(name) values('David');
Query OK, 1 row affected (0.12 sec)

mysql> insert into demo40(name) values('Mike');
Query OK, 1 row affected (0.10 sec)

mysql> insert into demo40(name) values('Sam');
Query OK, 1 row affected (0.19 sec)

mysql> insert into demo40(name) values('Carol');
Query OK, 1 row affected (0.12 sec)

mysql> insert into demo40(name) values('bob');
Query OK, 1 row affected (0.13 sec)

3. 登録された全レコードを確認する

SELECT文でテーブルの中身を確認してみましょう。

mysql> select * from demo40;

実行すると、以下のように6件のレコードが表示されます。

+----+-------+
| id | name |
+----+-------+
| 1 | Chris |
| 2 | David |
| 3 | Mike |
| 4 | Sam |
| 5 | Carol |
| 6 | bob |
+----+-------+
6 rows in set (0.00 sec)

4. LIMIT句で次の行を取得する(ページネーション)

ここが本題です。MySQLでページネーションを行うには、LIMIT句に「オフセット, 行数」の形式で値を指定します。

例えば、「5行目から2件を取得したい」場合は、オフセットに「4」(先頭行を0として数えるため)、行数に「2」を指定します。

mysql> select * from demo40 limit 4,2;

実行結果は以下の通りです。idが5と6の、つまり5行目以降の2件だけが取得できました。

+----+-------+
| id | name |
+----+-------+
| 5 | Carol |
| 6 | bob |
+----+-------+
2 rows in set (0.00 sec)

まとめ

MySQLでページネーションを実装するには、LIMIT句の第1引数にオフセット(スキップする行数)、第2引数に取得する行数を指定します。

  • LIMIT 行数:先頭から指定した行数だけ取得
  • LIMIT オフセット, 行数:指定位置から指定行数だけ取得

この仕組みを応用すれば、Webアプリケーションなどでよく見られる「次へ」「前へ」ボタンによるページ送り機能も簡単に実装できます。

  1. MySQLで次の自動インクリメントIDを取得する方法

    MySQLには、自動採番(オートインクリメント)を実現するためのAUTO_INCREMENTキーワードが用意されています。開始値はデフォルトで「1」に設定されており、新しいレコードが挿入されるたびに1ずつ加算されていきます。 MySQLで次の自動インクリメントIDを取得したい場合は、last_insert_id()関数を使う方法と、information_schemaのAUTO_INCREMENT値をSELECT文で参照する方法の2つがあります。本記事では後者の方法を具体的な例とともに解説します。 1. 自動インクリメント付きテーブルの作成 まず、「id」カラムを自動インクリメントに設定したテ

  2. MySQLでテーブルの最後の10件のレコードを取得する方法

    MySQLでテーブルの末尾にある10行(最新の10件)を取得したい場合は、SELECT文とLIMIT句を組み合わせたサブクエリを利用します。この記事では、実際にテーブルを作成し、データを挿入しながら、最後の10件を取得するクエリの手順を具体的に解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected