SQL 查詢報(bào)錯(cuò):Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'xxx' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
場(chǎng)景大概如下:
有成績(jī)表score, 字段有math,age.....等等,我現(xiàn)在要查詢各個(gè)年齡學(xué)生數(shù)學(xué)成績(jī)的總和并降序排序.
select sum(math) mathScore,
age?
from score
?group by age
?order by math;
然后查詢報(bào)錯(cuò)上述錯(cuò)誤聂儒,由于當(dāng)時(shí)腦子有點(diǎn)短路虎锚,實(shí)在沒(méi)發(fā)現(xiàn)錯(cuò)哪里,就上網(wǎng)查了查衩婚,基本都是說(shuō)怎么怎么改配置窜护,甚至有的離譜到說(shuō)group by中出現(xiàn)的字段order by中也要有!
于是我放棄了非春,該配置是不可能的柱徙,報(bào)錯(cuò)就改配置缓屠,那開(kāi)發(fā)團(tuán)隊(duì)還怎么玩!所以一個(gè)重新看看報(bào)錯(cuò)信息护侮,大概意思是order by 中的條件功能上依賴group by中的內(nèi)容敌完,而在order by 中沒(méi)有g(shù)roup by后的結(jié)果和條件。然后在看查詢羊初,也算明白原因了滨溉。修改查詢:
select sum(math) mathScore,
age?
from score
?group by age
?order by mathScore;
報(bào)錯(cuò)問(wèn)題解決,原因group by的結(jié)果是math的聚和长赞,而order by卻是用最初的字段排序业踏。
低級(jí)低級(jí)!腦殼昏涧卵!