繁体   English   中英

如何编写子句:WHERE num =…对于SELECT COUNT(*)作为num…的语句?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM