首页 >数据库 >mysql教程 >如何修复 SQL GROUP BY 查询中的'选择列表中的列无效”错误?

如何修复 SQL GROUP BY 查询中的'选择列表中的列无效”错误?

Susan Sarandon
Susan Sarandon原创
2025-01-23 01:11:10166浏览

How to Fix the

修复 SQL GROUP BY 子句中的“列在选择列表中无效”错误

使用 GROUP BY 的数据库查询需要仔细考虑 SELECT 列表。 所有选定的列必须进行聚合(使用 COUNTSUMMINMAX 等函数)或显式包含在 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>

这将按 LocationIDEmpID 对结果进行分组。 请注意,这将消除具有不同 LocationID 值的重复 EmpID 条目。 结果将单独显示每个员工的位置。

以上是如何修复 SQL GROUP BY 查询中的'选择列表中的列无效”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn