【MySQL】LIMIT - 取得データの上限件数
MySQLのLIMITについて解説します。
検証環境
LIMIT
LIMIT句は“SELECT文の取得レコード(データ)の上限件数を指定する句”です。
基本構文
LIMIT [オフセット,] 件数
件数
の部分に上限件数を記述します。
また、オフセット(何番目のデータからか)の指定も可能です。
※ オフセットを省略した場合は0です。
サンプル
次のitems
テーブルについて、3つのサンプルを示します。
mysql> SELECT * FROM items;
+----+-----------+-------+-------+
| id | name | price | stock |
+----+-----------+-------+-------+
| 1 | Apple | 200 | 10 |
| 2 | Orange | 150 | 3 |
| 3 | Pineapple | 1100 | 3 |
| 4 | Grapes | 3500 | 1 |
| 5 | Melon | 3500 | 5 |
+----+-----------+-------+-------+
5 rows in set (0.00 sec)
上限件数のみ
最もシンプルなLIMIT句のサンプルです。
mysql> SELECT * FROM items
___ih_hl_start
-> LIMIT 2;
___ih_hl_end
+----+--------+-------+-------+
| id | name | price | stock |
+----+--------+-------+-------+
| 1 | Apple | 200 | 10 |
| 2 | Orange | 150 | 3 |
+----+--------+-------+-------+
2 rows in set (0.00 sec)
2行目のLIMIT 2
がLIMIT句です。
上限件数が2
のため、2レコードのみ取得しています。
オフセットあり
オフセットを指定する場合のサンプルです。
mysql> SELECT * FROM items
___ih_hl_start
-> LIMIT 3, 2;
___ih_hl_end
+----+--------+-------+-------+
| id | name | price | stock |
+----+--------+-------+-------+
| 4 | Grapes | 3500 | 1 |
| 5 | Melon | 3500 | 5 |
+----+--------+-------+-------+
2 rows in set (0.01 sec)
2行目のLIMIT 3, 2
がLIMIT句(オフセットあり)です。
オフセットは3
のため、4番目のレコードから上限件数をカウントして取得しています。
ORDER BY句の併用
ORDER BY句を併用するサンプルです。
mysql> SELECT * from items
-> ORDER BY price;
+----+-----------+-------+-------+
| id | name | price | stock |
+----+-----------+-------+-------+
| 2 | Orange | 150 | 3 |
| 1 | Apple | 200 | 10 |
| 3 | Pineapple | 1100 | 3 |
| 4 | Grapes | 3500 | 1 |
| 5 | Melon | 3500 | 5 |
+----+-----------+-------+-------+
5 rows in set (0.00 sec)
mysql> SELECT * from items
___ih_hl_start
-> ORDER BY price
-> LIMIT 2, 2;
___ih_hl_end
+----+-----------+-------+-------+
| id | name | price | stock |
+----+-----------+-------+-------+
| 3 | Pineapple | 1100 | 3 |
| 4 | Grapes | 3500 | 1 |
+----+-----------+-------+-------+
2 rows in set (0.00 sec)
15〜16行目がORDER BY句とLIMIT句の併用です。
ORDER BY句でprice
カラムで昇順並び替えており、LIMIT句はORDER BY句で並び替えた表データに適用されるため、17〜22行目のような結果になります。