You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL报错ERROR 1111 Invalid use of group function如何修复

错误原因分析
  • 报错ERROR 1111 (HY000) Invalid use of group function确实出自你标注的代码行,问题在于MySQL不支持嵌套使用聚合函数:count(challenge_id)是分组后的聚合结果,不能直接在外层再套max()做二次聚合,这种写法不符合SQL语法规范。
修复方法

把嵌套聚合的逻辑拆分为两层子查询:先统计每个用户的挑战总数,再对这个统计结果取最大值即可,同时优化了原代码的筛选逻辑,完全匹配题目要求,修正后的完整代码如下:

SELECT 
    h.hacker_id, 
    h.name, 
    COUNT(c.challenge_id) AS total
FROM Challenges c
INNER JOIN Hackers h ON h.hacker_id = c.hacker_id
GROUP BY h.hacker_id, h.name
HAVING total NOT IN (
    -- 筛选出需要排除的挑战数:出现次数>1且不是最大值
    SELECT cnt
    FROM (
        SELECT COUNT(challenge_id) AS cnt
        FROM Challenges
        GROUP BY hacker_id
    ) AS challenge_counts
    GROUP BY cnt
    HAVING COUNT(*) > 1 
    AND cnt != (
        -- 拆分嵌套聚合,先统计所有用户的挑战数再取最大值
        SELECT max(cnt)
        FROM (
            SELECT COUNT(challenge_id) AS cnt
            FROM Challenges
            GROUP BY hacker_id
        ) AS max_count
    )
)
ORDER BY total DESC, h.hacker_id;

内容的提问来源于stack exchange,提问作者NailaBagir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 19:27:00