Loading... # [ERROR 1055 (42000): sql_mode = only_full_group_by不兼容](https://blog.csdn.net/liqinglonguo/article/details/131128659) ```sql mysql> select sum(id),name from student group by name; +---------+--------+ | sum(id) | name | +---------+--------+ | 1 | 张三 | | 2 | 尔四 | | 3 | 小红 | | 10 | 小明 | | 5 | 小青 | +---------+--------+ 5 rows in set (0.00 sec) mysql> select sum(id),name,code from student group by name; ERROR 1055 (42000): Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test.student.code' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by ``` ## 错误描述: > “错误代码:1055,SELECT列表的表达式 #1 不在GROUP BY子句中,并且包含非聚合列’test.student.code’,它在功能上不依赖于GROUP BY子句中的列; 这与sql_mode = only_full_group_by不兼容” ## 分析问题 ### 1)原理层面 > 这个错误会发生在mysql 5.7 版本及以上版本mysql 5.7版本以上默认的sql配置是:sql_mode=“ONLY_FULL_GROUP_BY”,这个配置严格执行了"SQL92标准"。 > 很多程序员从5.6升级到5.7时,为了语法兼容,大部分会选择调整sql_mode,使其保持跟5.6一致,为了尽量兼容程序。 ### 2)sql层面 在sql执行时,出现该原因,简单来说就是: > 由于开启了ONLY_FULL_GROUP_BY的设置,如果select 的字段不在 group by 中, > 并且select 的字段未使用聚合函数(SUM,AVG,MAX,MIN等)的话,那么这条sql查询是被mysql认为非法。 最后修改:2023 年 11 月 30 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏