📜  error-expression-select-list-not-group-by-nonaggregated-column - SQL (1)

📅  最后修改于: 2023-12-03 15:30:38.146000             🧑  作者: Mango

错误: 选择列表中的非分组未聚合列 - SQL

在编写SQL查询时,我们可能会遇到“选择列表中的非分组未聚合列”错误。该错误通常是由于在SELECT语句中选择了未包含在GROUP BY子句中,也未包含在聚合函数中的列。

错误原因
SELECT column1, column2, aggregate_function(column3)
FROM table_name
WHERE conditions
GROUP BY column1;

在此查询中,我们选择了3个列,其中1个列(column3)使用了聚合函数。同时,我们使用了GROUP BY子句对列1进行分组。

现在,如果我们在SELECT语句中添加一个没有包含在GROUP BY子句或聚合函数中的列,则不会产生结果:

SELECT column1, column2, aggregate_function(column3), column4
FROM table_name
WHERE conditions
GROUP BY column1;

上面的查询将显示错误:“选择列表中的非分组未聚合列”。

错误原因很简单 - 我们在查询中选择了一个未包含在GROUP BY子句或聚合函数中的列(column4)。

解决方案

解决该问题的方法之一是在SELECT语句中将所有列都包含在GROUP BY子句中:

SELECT column1, column2, aggregate_function(column3), column4
FROM table_name
WHERE conditions
GROUP BY column1, column2, column4;

这将使查询返回正确的结果,并避免出现错误:“选择列表中的非分组未聚合列”。

另一个解决方法是为未包含在GROUP BY子句中的每个列添加聚合函数。例如,如果我们想在查询结果中显示column4的值,则可以将其添加到聚合函数中:

SELECT column1, column2, aggregate_function(column3), MAX(column4)
FROM table_name
WHERE conditions
GROUP BY column1, column2;

这将返回正确的结果,并且不会出现错误:“选择列表中的非分组未聚合列”。

总结

在编写SQL查询时,避免“选择列表中的非分组未聚合列”错误是很重要的。我们可以通过将所有列都包含在GROUP BY子句中或为每个未包含在GROUP BY子句中的列添加聚合函数来解决这个问题。