首页 > 数据库 > mysql教程 > 为什么我的 SQL 查询会产生'列不在聚合或分组依据子句中”错误?

为什么我的 SQL 查询会产生'列不在聚合或分组依据子句中”错误?

Susan Sarandon
发布: 2025-01-23 01:26:09
原创
379 人浏览过

Why Does My SQL Query Produce a

排查“列不在聚合或分组依据子句中”SQL 错误

本指南解决了常见的 SQL 错误:“列‘Employee.EmpID’在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。”当您的 SELECT 语句包含既不聚合也不属于 GROUP BY 子句的列时,就会出现此错误。

理解聚合函数和 GROUP BY

GROUP BY 子句对指定列中具有相同值的行进行分组。 要显示这些组中的数据,您通常使用聚合函数,例如 SUMCOUNTAVGMINMAX。这些函数计算每个组的汇总值。

单值规则

SQL 的单值规则规定 SELECT 列表中的任何非聚合列在每个组中都必须具有单个一致的值。 如果非聚合列每组包含多个值,则查询将不明确,因为 SQL 无法确定要返回哪个值。

解决错误

假设您的目标是列出位置 ID 和每个位置的员工人数。更正后的查询使用 COUNT 聚合函数:

<code class="language-sql">SELECT loc.LocationID, COUNT(emp.EmpID) AS EmployeeCount
FROM Employee AS emp
FULL JOIN Location AS loc ON emp.LocationID = loc.LocationID
GROUP BY loc.LocationID;</code>
登录后复制

COUNT(emp.EmpID) 计算每个 LocationID 的员工数量。这确保了每组只有一个 EmployeeCount 值,满​​足单值规则并消除错误。 GROUP BY loc.LocationID 子句按位置对结果进行分组。

以上是为什么我的 SQL 查询会产生'列不在聚合或分组依据子句中”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

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