MySQL 错误:"Invalid use of group function" 的原因及解决方法
在给定的 MySQL 查询中,“Invalid use of group function” 错误是因为在 WHERE 子句中使用了 COUNT 函数。WHERE 子句在分组之前过滤行,导致错误。
使用 HAVING 子句解决问题
要解决此问题,请将 WHERE 子句替换为 HAVING 子句。HAVING 子句在分组之后过滤组。在本例中,HAVING 子句应检查供应商 ID (sid) 的计数,以确保它大于或等于 2。
以下是更正后的子查询:
<code class="language-sql">( SELECT c2.pid FROM Catalog AS c2 WHERE c2.pid = c1.pid HAVING COUNT(c2.sid) >= 2 )</code>
包含 HAVING 子句的完整查询
使用更新后的子查询,完整的查询变为:
<code class="language-sql">SELECT c1.pid -- 选择 pid FROM Catalog AS c1 -- 来自 Catalog 表 WHERE c1.pid IN (SELECT c2.pid -- 其中 pid 在以下集合中: FROM Catalog AS c2 -- pids WHERE c2.pid = c1.pid HAVING COUNT(c2.sid) >= 2 -- 至少有两个对应的 sids );</code>
此查询将返回至少由两个不同供应商提供的零件的 pid。
以上是为什么 MySQL 会抛出'无效使用组函数”以及如何使用 HAVING 修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!