我在显示此查询和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
答案 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
。