令人困惑的错误 1111:组函数的无效使用
尝试使用聚合函数(例如 AVG)时会出现此问题WHERE 子句,导致神秘的错误 1111 (HY000).
理解问题的症结
SQL 规定聚合函数不能驻留在 WHERE 子句中,除非它们封装在包含在HAVING 子句或选择列表。此外,进行聚合操作的列必须从外部上下文引用。
使用 WHERE 子句解决错误
纠正此错误的一种方法是使用WHERE 子句中的子查询,如下所示:
select * from staff where salary > (select avg(salary) from staff)
在这种情况下,平均值使用子查询计算工资,然后与每个人的工资进行比较。
使用 HAVING 子句解决错误
或者,可以利用 HAVING 子句建立搜索组或聚合的条件,如下所示:
select deptid,COUNT(*) as TotalCount from staff group by deptid having count(*) > 2
HAVING 子句指定结果只有两个以上成员的组才会被返回。
HAVING 子句的附加注释
值得注意的是,HAVING 子句通常与GROUP BY 子句。但是,当 GROUP BY 不存在时,HAVING 的行为类似于 WHERE 子句。
以上是为什么我会收到 MySQL 错误 1111:组函数的无效使用?的详细内容。更多信息请关注PHP中文网其他相关文章!