GROUP BY子句,并在查询中

时间:2019-05-24 16:05:40

标签: mysql sql

我在显示此查询和GROUP BY查询时遇到了一些麻烦。无论我对GROUP BY做什么,我都会不断遇到相同的错误。任何帮助将不胜感激。

当前出现此错误:

错误: SELECT列表的表达式#2不在GROUP BY子句中,并且包含未聚合的列'myData.stateName',该列在功能上不依赖于GROUP BY子句中的列;这与sql_mode = only_full_group_by

不兼容

这是我的SQL:

SELECT 
  stateAbv,
  stateName,
  '' AS cityName,
  count(*) AS state_count 
from
  myData 
GROUP BY stateAbv 
union
SELECT 
  stateAbv,
  stateName,
  city AS cityName,
  COUNT(*) AS city_count 
FROM
  myData 
GROUP BY stateAbv,
  city 
ORDER BY stateAbv,
  cityName

1 个答案:

答案 0 :(得分:1)

您会收到错误GROUP BY clause and contains nonaggregated column 'myData.stateName',因为列stateName不在group by子句中,正如它所说的那样。就是说,您正在将一些行分组在一起,并且当查询尝试将stateName列分组时,它在分组的行中可能具有不同的值。查询不知道哪一个是在分组行中显示的正确值。您需要提供一种方法来告诉查询哪个值是保留在分组行中的正确值。假设您有一个数字列,并且要分组在一起的行中的值为1,2,3 and 4。您可以说我想要这些数字组中的最高数字,然后按MAX(column_name)进行操作,分组的行将显示4

在查询中,如果stateName中的所有值在被分组的行中都相同,只需在您的group by子句中添加stateName