解决MySQL“无效分组函数使用”错误
在MySQL中,遇到“无效分组函数使用”错误信息时,理解WHERE和HAVING子句之间的区别至关重要。
问题:
您的查询检索至少由两个供应商提供的零件ID (pids)。但是,您收到以下错误:
<code>1111 - Invalid use of group function</code>
原因:
此错误源于子查询中WHERE子句的错误使用。您试图在对行进行分组和聚合之前使用WHERE子句过滤行,这不是预期的行为。
解决方案:
解决方案是用HAVING子句替换WHERE子句。HAVING在MySQL对行进行分组并计算聚合之后运行,允许您根据这些聚合来过滤结果。
改写子查询:
用HAVING子句替换子查询中的WHERE子句:
<code>( -- pid属于以下集合: SELECT c2.pid -- pids集合 FROM Catalog AS c2 -- 来自catalog表 WHERE c2.pid = c1.pid HAVING COUNT(c2.sid) >= 2)</code>
说明:
此修改后的子查询将在按pid分组并计算与每个pid关联的不同供应商ID (sid) 之后正确过滤行。HAVING子句确保仅选择计数至少为2的行。
通过适当地使用HAVING子句,您可以解决“无效分组函数使用”错误并获得所需的结果。
以上是如何修复MySQL的'组函数无效使用”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!