only_full_group_by是什麽鬼

2016-08-12 09:25:00
hainuo
原創 2504
摘要:only_full_group_by是什麽鬼
#起源昨天裝瞭聽雲apm 插件,於是一晚上的報警不斷,髮現總是提示 mysql4200錯誤```["42000",1055,"Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'xxx.x2_examhistory.ehusername' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by"]. sql=[SELECT count(*) AS number,ehusername,max(ehscore) as ehscore FROM x?_examhistory WHERE ehstarttime >= :ehstarttime GROUP BY ehuserid ORDER BY number DESC LIMIT ??]```#查找原因度娘幫瞭忙,髮現這樣子的事情 `sql_mode` 中默認是 `only_full_group_by` 這是什麽鬼通過 mysql 官方[13.20.3 MySQL Handling of GROUP BY](http://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html) 這裡可以詳細的值,在使用瞭主鍵穫取數據的情況下如果開啟瞭 `only_full_group_by` (msyql 5.7 默認開啟,5.6及之前不開啟),那麽如果 `select fields` 中的字段有計祘就會被拒絶。主要原因如果使用瞭 id,且 id 爲主鍵那麽 你所用的 max(age) 中的 age 是由固定值的從而就齣現這樣的問題,max(age)和 age 是不匹配的 max(age)要求一箇列錶,而沒有被提供。所以拒絶。#解決方式隻需要將 sql_mode 中的值`only_full_group_by` 去掉卽可。
發錶評論
捌 加 壹 =
評論通過審核後顯示。