SQL GROUP BY
查询中的无效列错误
在包含 GROUP BY
子句的 SQL 查询中选择列时,如果列既未包含在聚合函数中,也未包含在 GROUP BY
子句中,则可能会发生错误。此错误通常表现为:“列 'Employee.EmpID' 在选择列表中无效,因为它既未包含在聚合函数中,也未包含在 GROUP BY
子句中”。
其原因在于单值规则。在 GROUP BY
查询中,非聚合列的输出在每个组内必须是唯一的。但是,像 'Employee.EmpID' 一样选择单个列而不对其进行聚合,会导致结果不明确。
要解决此错误,请将列包含在 GROUP BY
子句中,或对其应用聚合函数。例如,如果您想计算每个位置的员工人数,请使用以下查询:
<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>
此查询计算每个位置的员工人数,同时仍为每个组提供位置 ID。或者,如果您想为每个位置选择所有列,但只显示最新的员工 ID(最大值),则可以使用 MAX
聚合函数:
<code class="language-sql">SELECT loc.LocationID, MAX(emp.EmpID) AS LatestEmployeeID FROM Employee AS emp FULL JOIN Location AS loc ON emp.LocationID = loc.LocationID GROUP BY loc.LocationID</code>
通过使用聚合函数或将列包含在 GROUP BY
子句中,您可以确保检索到的数据明确且符合单值规则。
以上是为什么使用 GROUP BY 的 SQL SELECT 查询返回'无效列”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!