排除 MySQL 的“无效使用组函数”错误
本指南解决了查询涉及多个供应商和零件的数据时经常遇到的常见 MySQL 错误“无效使用组函数”。 目标是找到至少两个不同供应商提供的零件。
核心问题在于在子查询中处理 WHERE
等聚合函数时误用 COUNT()
子句。 WHERE
在 分组之前过滤单个行,而 在 HAVING
聚合之后过滤行组。 由于我们需要根据每个零件的数量供应商(聚合值)进行过滤,因此至关重要。
HAVING
正确的方法涉及使用子查询来识别满足条件的零件(至少两个供应商),然后使用
替换为 IN
:WHERE
HAVING
更正后的子查询结构如下所示:
此修订后的子查询使用
<code class="language-sql">( SELECT c2.pid FROM Catalog AS c2 GROUP BY c2.pid HAVING COUNT(DISTINCT c2.sid) >= 2 )</code>按零件 ID 对行进行分组,并使用
过滤这些组,仅保留具有两个或多个不同供应商 ID 的组。 GROUP BY c2.pid
关键字确保每个供应商仅被计数一次,即使他们多次供应同一部件。HAVING COUNT(DISTINCT c2.sid) >= 2
DISTINCT
简而言之,请记住在子查询中将
以上是如何正确使用MySQL子查询中的GROUP函数查找多个供应商供应的零件?的详细内容。更多信息请关注PHP中文网其他相关文章!