MySQL 错误:分组函数使用无效
在使用 MySQL 时遇到“分组函数使用无效”错误,务必理解 WHERE 和 HAVING 子句的区别。
在提供的查询中,目标是找出至少由两个供应商提供的零件。最初,您尝试使用 WHERE 子句将每个 pid 与计算 sids 的子查询的输出进行比较。但是,MySQL 在聚合之前执行 WHERE,导致这种方法无效。
正确的解决方案是使用 HAVING 子句。HAVING 过滤聚合函数(如 COUNT())的结果,允许您执行聚合后的计算。通过使用 HAVING 重写子查询,如答案所示:
<code class="language-sql">( SELECT c2.pid FROM Catalog AS c2 WHERE c2.pid = c1.pid HAVING COUNT(c2.sid) >= 2 )</code>
您可以获得所需的结果。HAVING 子句将确保最终输出中只包含至少有两个供应商的零件。
以上是MySQL 错误:'组函数的使用无效”—WHERE 与 HAVING:何时应该使用哪个?的详细内容。更多信息请关注PHP中文网其他相关文章!