如何避免错误"WHERE中不允许聚合函数"

D-L*_*Lef 45 mysql sql aggregate-functions

这个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;
Run Code Online (Sandbox Code Playgroud)

我怎样才能避免这个错误?

Azi*_*ikh 79

替换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;
Run Code Online (Sandbox Code Playgroud)

HAVING类似于WHERE,它们都用于过滤结果记录,但HAVING用于过滤聚合数据(何时GROUP BY使用).


Sah*_*hah 5

使用HAVING子句而不是WHERE

试试这个:

SELECT o.ID, COUNT(p.CAT) cnt
FROM Orders o
INNER JOIN Products p ON o.P_ID = p.P_ID 
GROUP BY o.ID HAVING cnt > 3
Run Code Online (Sandbox Code Playgroud)