首页 >数据库 >mysql教程 >为什么 MySQL 会抛出'无效使用组函数”以及如何使用 HAVING 修复它?

为什么 MySQL 会抛出'无效使用组函数”以及如何使用 HAVING 修复它?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-11 22:31:44929浏览

Why MySQL Throws "Invalid use of group function"

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn