【SQL】データの取得件数を指定する方法~Limit~

MySQL

取得するデータの件数を指定することができるLimit句ついて紹介していきます。

データの取得件数を制限する理由

データベースで安易にすべてのデータを取得していしまうと、処理が多すぎて止まってしまう場合があります。

検証環境であればそれほど重大な事故ではありませんが、本番環境などで作業した際にこのようなことが起こってしまうと大変なことになります。

事故を起こさないためには取得するデータの件数をあらかじめ設定しましょう

前提条件

使用するテーブル:USERSテーブル

+----+----------+------+------------------+
| id | name     | age  | email            |
+----+----------+------+------------------+
|  1 | 柴犬     |    7 | shibainu@dog.com |
|  2 | コーギー |    8 | corgi@dog.com    |
|  3 | ダックス |   10 | daks@dog.com     |
|  4 | パグ     |    3 | pug@dog.com      |
|  5 | シーズー |   17 | shi-tzu@dog.com  |
|  6 | 秋田犬   |   12 | akitainu@dog.com |
+----+----------+------+------------------+

取得件数を指定する方法

取得件数を指定するLimit句の使い方

構文

select * from users Limit 取得したい件数;

コードの見方

青文字・・・省略できない決まり文句
紫文字・・・コメント
白文字・・・利用者の任意で入力する文字列

今回はUSERSテーブルから3件のデータを取得していきます。

select * from users Limit 3;

出力結果

+----+----------+------+------------------+
| id | name     | age  | email            |
+----+----------+------+------------------+
|  1 | 柴犬     |    7 | shibainu@dog.com |
|  2 | コーギー |    8 | corgi@dog.com    |
|  3 | ダックス |   10 | daks@dog.com     |
+----+----------+------+------------------+
3 rows in set (0.001 sec)
Limit句で〇番目から△番目まで取得する

Limit句では件数を指定するだけではなく、どこから何番目までという書き方もできます。

例えば、USERSテーブルの3番目から3件取得したいといった指定です。

構文

select * from users Limit 開始位置, 取得したい件数;

開始位置と取得したい件数を指定しています。また、間は(,)カンマで区切る必要があります。

今回のUSERSテーブルではデータが6件になるので開始位置を3として取得したい件数も3件としていきます。

select * from users Limit 3, 3;

出力結果

+----+----------+------+------------------+
| id | name     | age  | email            |
+----+----------+------+------------------+
|  4 | パグ     |    3 | pug@dog.com      |
|  5 | シーズー |   17 | shi-tzu@dog.com  |
|  6 | 秋田犬   |   12 | akitainu@dog.com |
+----+----------+------+------------------+
3 rows in set (0.027 sec)

idカラムの値が4のパグから3件データを取得することができました。

注意!

開始位置の指定ではプログラミングの慣例と同様に数字を0から数えていきます。上記のコードではidカラムが3のダックスから取得せず、4のパグから3件のデータを取得しているのはそのためです。

タイトルとURLをコピーしました