SQL 查询错误:列在 SELECT 列表中无效,原因是不符合聚合函数或 GROUP BY 子句
执行 SQL 查询时,您可能会遇到以下错误:
<code>Column 'Column_Name' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.</code>
此错误的原因如下:
数据分组
在 GROUP BY 子句中,指定列值相同的行将分组在一起。例如,在以下查询中:
<code>SELECT loc.LocationID, emp.EmpID FROM Employee AS emp FULL JOIN Location AS loc ON emp.LocationID = loc.LocationID GROUP BY loc.LocationID</code>
员工按其 LocationID 分组。但是,如果您尝试在 SELECT 列表中包含不在 GROUP BY 子句中的列(例如,emp.EmpID),则会收到此错误,因为无法确定应为每个组选择哪个 EmpID 值。
聚合函数
聚合函数(如 SUM、COUNT、MAX 和 MIN)可用于获取分组数据的汇总信息。如果您在 SELECT 列表中包含非聚合列,但它不是 GROUP BY 子句的一部分,则必须对其使用聚合函数。
例如,如果您想计算每个位置的员工人数,可以使用:
<code>SELECT loc.LocationID, COUNT(emp.EmpID) FROM Employee AS emp FULL JOIN Location AS loc ON emp.LocationID = loc.LocationID GROUP BY loc.LocationID</code>
这确保了对于每个位置,只返回员工计数,而不是单个员工 ID 列表。
解决方法
要解决此错误,您必须:
以上是为什么我的 SQL 查询会抛出与 GROUP BY 相关的'选择列表中的列无效”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!