1. ホーム
  2. mysql

[解決済み] WHEREで集計関数は使用できません "というエラーを回避する方法

2022-02-06 01:24:18

質問

このSQLコードは

集約関数はWHEREで使用できません。

SELECT o.ID ,  count(p.CAT)
FROM Orders o
INNER JOIN Products p ON o.P_ID = p.P_ID 
WHERE count(p.CAT) > 3
GROUP BY o.ID;

どうすればこのエラーを回避できますか?

解決方法は?

交換 WHERE 節を HAVING を、このようにします。

SELECT o.ID ,  count(p.CAT)
FROM Orders o
INNER JOIN Products p ON o.P_ID = p.P_ID 
GROUP BY o.ID
HAVING count(p.CAT) > 3;

HAVINGWHERE つまり、どちらも結果のレコードをフィルタリングするために使われますが HAVING は、集計されたデータに対するフィルタリングに使用されます (時 GROUP BY が使用されます)。