ERROR 1055 (42000): Expression #3 of SELECT list is not in GROUP BY clause ... 的錯誤

在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';

結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章