【MySQL】LIMIT - 取得データの上限件数

【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句(オフセットあり)です。

オフセットはのため、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行目のような結果になります。