MySQL中遇到時常出現的錯誤之一就是“Error 1055: Expression #xxx of SELECT list is not in GROUP BY clause and contains nonaggregated column”,這個錯誤通常會發生在你的查詢語句中包含了GROUP BY和SELECT語句,而SELECT中又存在了非聚合的列。
很多同學在遇到這個錯誤時,會嘗試去修改MySQL的配置文件my.cnf或者my.ini,將sql_mode參數的值改為“ONLY_FULL_GROUP_BY”,目的是為了解決這個錯誤。但是在實際操作時卻發現修改不起作用,最后只能無奈放棄。
#修改my.cnf或my.ini文件中的sql_mode參數 [mysqld] sql_mode = ONLY_FULL_GROUP_BY
如果修改MySQL的配置文件無效,我們可以考慮在MySQL客戶端中設置sql_mode的值,這個方法可以臨時解決問題,但是每次重新連接MySQL之后都需要重新設置一次sql_mode的值,比較麻煩。
#在MySQL客戶端中設置sql_mode的值 SET sql_mode = ONLY_FULL_GROUP_BY;
另外,盡量避免使用SELECT語句中的*通配符,而是明確指定需要查詢的字段,這樣可以避免在GROUP BY和SELECT語句中出現非聚合的列。
最后,遵循良好的數據庫設計規范,對字段進行合理的設計和管理,可以避免一些細節上的問題,減少不必要的麻煩。