JavaSQLMysql

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()函数会选择同一组数据中的第一条来显示

上一篇 下一篇

猜你喜欢

热点阅读