修复 SQL GROUP BY 子句中的“列在选择列表中无效”错误
使用 GROUP BY
的数据库查询需要仔细考虑 SELECT
列表。 所有选定的列必须进行聚合(使用 COUNT
、SUM
、MIN
、MAX
等函数)或显式包含在 GROUP BY
子句中。 不遵守此规则会导致错误“列在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中”。
当 SELECT
列表包含既不聚合也不属于 GROUP BY
分组的列时,就会出现此错误。
解决方案涉及调整 SELECT
列表或 GROUP BY
子句。
示例和解决方案:
让我们检查一下这个有问题的查询:
<code class="language-sql">SELECT loc.LocationID, emp.EmpID FROM Employee AS emp FULL JOIN Location AS loc ON emp.LocationID = loc.LocationID GROUP BY loc.LocationID</code>
发生错误是因为 emp.EmpID
既未聚合也不包含在 GROUP BY
子句中。 这里有两种纠正方法:
解决方案 1:聚合未分组的列
<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)
) 进行计数。
解决方案 2:将列添加到 GROUP BY 子句
<code class="language-sql">SELECT loc.LocationID, emp.EmpID FROM Employee AS emp FULL JOIN Location AS loc ON emp.LocationID = loc.LocationID GROUP BY loc.LocationID, emp.EmpID</code>
这将按 LocationID
和 EmpID
对结果进行分组。 请注意,这将消除具有不同 LocationID
值的重复 EmpID
条目。 结果将单独显示每个员工的位置。
以上是如何修复 SQL GROUP BY 查询中的'选择列表中的列无效”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!