【MySQL】HAVING - グループ化データの検索条件
MySQLのHAVINGについて解説します。
検証環境
HAVING
HAVING句は“GROUP BY句でグループ化したカラムに対して対象条件を指定する句”です。
WHERE句のように比較演算、論理演算によって条件を指定できます。
基本構文
HAVING 条件
条件
の部分にGROUP BY句でグループ化したカラムを使った条件を記述します。
サンプル
mysql> SELECT * FROM items;
+----+-----------+-------+-------+
| id | name | price | stock |
+----+-----------+-------+-------+
| 1 | Apple | 200 | 10 |
| 2 | Orange | 150 | 3 |
| 3 | Apple | 300 | 5 |
| 4 | Pineapple | 1100 | 1 |
| 5 | Grapes | 3500 | 1 |
| 6 | Pineapple | 2000 | 3 |
+----+-----------+-------+-------+
6 rows in set (0.01 sec)
mysql> SELECT name, SUM(stock) AS total_stock FROM items
-> GROUP BY name
___ih_hl_start
-> HAVING total_stock < 10;
___ih_hl_end
+-----------+-------------+
| name | total_stock |
+-----------+-------------+
| Orange | 3 |
| Pineapple | 4 |
| Grapes | 1 |
+-----------+-------------+
3 rows in set (0.00 sec)
16行目のHAVING total_stock < 10
がHAVING句です。
GROUP BY句によってname
カラムでグループ化し、SUM
関数でstock
カラムの合計値を計算しています。
HAVING句でtotal_stock
(stock
の合計値)を使った条件を指定しているため、Apple
のデータは表示されません。