在mysql中使用 group by 出現的問題
ERROR 1055 (42000): Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'ynn.goods.goods_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
問題原因:
ONLY_FULL_GROUP_BY的意思是:對於GROUP BY聚合操作,如果在SELECT中的列,沒有在GROUP BY中出現,那麼這個SQL是不合法的,因爲列不在GROUP BY從句中,也就是說查出來的列必須在group by後面出現,否則就會報錯,或者這個字段出現在聚合函數裏面。
在select指定的字段要麼就要包含在Group By語句的後面,作爲分組的依據;要麼就要被包含在聚合函數中。
找原因:
查看mysql版本命令:select version();
查看sql_model參數命令:
SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;
查看:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
第一項默認開啓ONLY_FULL_GROUP_BY了,導致出現了錯誤,需要把它的默認關掉。
解決方法:
命令行輸入 :
set sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
結果: