【MySQL】取得するデータの行数を制限する(limit や offset の使い方)

取得するデータの行数を制限するには「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」で取得開始の位置を指定できる。

 

MySQL入門メニュー