sql_mode:ONLY_FULL_GROUP_BY报错问题E
2022-07-06 本文已影响0人
平方
一、问题
mysql查询时出现错误
Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'xx.column' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
二、原因
出现这个问题的原因是由于默认的 MySQL 配置中 sql_mode 配置了 ONLY_FULL_GROUP_BY,ONLY_FULL_GROUP_BY的语义就是确定select target list中的所有列的值都是明确语义,意思就是在此模式下,target list中的值要么是来自于聚合函数(sum、avg、max等)的结果,要么是来自于group by list中的表达式的值。
三、解决方法
方法1修改配置
修改my.ini文件
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
方法2使用any_value()函数
MySQL提供了any_value()函数来抑制ONLY_FULL_GROUP_BY值被拒绝,any_value()函数会选择同一组数据中的第一条来显示