[英]How to write clause: WHERE num =… for a statement SELECT COUNT(*) as num…?
我有陈述
SELECT COUNT(*) as num_requests, ip_address FROM requests
GROUP BY ip_address
ORDER BY num_requests DESC;
当我使用以下子句WHERE num_requests = 3
出现语法错误
SELECT COUNT(*) as num_requests, ip_address
FROM requests
WHERE num_requests = 3
GROUP BY ip_address
ORDER BY num_requests DESC;
“ where子句”中的未知列“ num_requests”
有什么方法可以使用此WHERE
子句,而无需对上述返回的整个结果集编写嵌套查询或join语句?
SELECT COUNT(*) as num_requests, ip_address
FROM requests
GROUP BY ip_address
HAVING num_requests = 3
ORDER BY num_requests DESC
您需要having
:)
SELECT COUNT(*) as num_requests, ip_address FROM requests
GROUP BY ip_address
HAVING COUNT(*) = 3
ORDER BY num_requests DESC;
补充说明为什么不能使用WHERE
而是HAVING
:带有诸如SUM, MIN,MAX,AVG,COUNT
聚合的WHERE
无法使用。 因此,您必须使用后者。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.