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

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

Mary-Kate Olsen
发布: 2025-01-11 22:31:44
原创
833 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板