sql_mode:ONLY_FULL_GROUP_BY报错问题Expression #2 of SELECT list is not in GROUP BY clause and contain...

一、问题

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容