之前用的是mysql 5.6版本,執行select * from table group by colunm 是可以出結果的,
但是切換的5.7版本,這條sql就報錯,
Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.xxxxx.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
其實相對於語法來說,非聚集字段不能出現在查詢列表中,這條sql本身就是錯誤的,那么為什么5.6mysql可以執行呢?
找了好久發現是原來是sql mode的數據庫數據類型的問題。
5.7開始,mysql就開始嚴格遵從SQL 92規范,凡事沒有遵循規范的sql都不予執行,當然可以通過配置修改成5.6版本的值,但是本人不建議這么做。
可以通過sql查詢出當前sql mode值
select @@GLOBAL.sql_mode;-- 查詢全局值 select @@SESSION.sql_mode; -- 查詢當前會話值 5.7版本的值為:ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 5.6版本的值為:STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
