取得するデータの行数を制限するには「LIMIT」句や「OFFSET」句を使います。
ここでは MySQLコマンド「LIMIT」や「OFFSET」の具体的な使い方を解説していきます。
「LIMIT」や「OFFSET」の基本
「LIMIT」は、「SELECT」などと組み合わせて使います。
以下のようにすると、指定した数だけデータを取得できます。
SELECT * FROM テーブル名 LIMIT 取得するデータ数;
さらに「OFFSET」を加えることで、取得開始の位置も指定することができます。
SELECT * FROM テーブル名 LIMIT 取得するデータ数 OFFSET 取得開始の位置;
SELECT 文の詳しい使い方はこちら。
取得するデータの行数を指定する
実際にMySQLサーバーに接続し、動作を確認してみましょう。
あらかじめ「test」データベースの「users」テーブルに、以下のようにデータが保存されている例で進めていきます。
name | age |
佐藤 | 21 |
鈴木 | 25 |
田中 | 21 |
山田 | 32 |
データを保存するコマンド例
CREATE DATABASE test;
USE test;
CREATE TABLE users (name VARCHAR(100), age INT);
INSERT INTO users (name, age) VALUES ('佐藤', 21);
INSERT INTO users (name, age) VALUES ('鈴木', 25);
INSERT INTO users (name, age) VALUES ('田中', 21);
INSERT INTO users (name, age) VALUES ('山田', 32);
CREATE DATABASE 文の詳しい使い方はこちら。
USE 文の詳しい使い方はこちら。
CREATE TABLE 文の詳しい使い方はこちら。
INSERT INTO 文の詳しい使い方はこちら。
それでは「users」テーブルの先頭のデータを1件だけ取得してみましょう。コマンドは以下。
SELECT * FROM users LIMIT 1;
コマンドを実行すると、以下のように結果が表示されました。
取得開始の位置を指定する
今度は OFFSET
も使って、取得開始の位置も指定してみましょう。
以下のようにすると、2行目から2件のデータを取得することができます。
SELECT * FROM users LIMIT 2 OFFSET 1;
取得開始の位置は0を起点とするため、0
を指定すると1行目から、1
を指定すると2行目から取得することになります。
OFFSET
を使わずに取得開始の位置を指定する方法もあります。
以下のコマンドで同様の結果が得られます。
SELECT * FROM users ORDER BY age LIMIT 1, 2;
データをソートしてから、必要な件数を取得する
今度は「ORDER BY」と組み合わせて、「age」カラムの値の小さい順に、3件のデータを取得してみましょう。コマンドは以下。
SELECT * FROM users ORDER BY age LIMIT 3;
コマンドを実行すると、以下のように結果が表示されました。
まとめ
以上、MySQLコマンド「LIMIT」の使い方でした!
ここまでの内容をまとめておきます。
- 「LIMIT」で取得するデータの件数を指定できる。
- 「OFFSET」で取得開始の位置を指定できる。