当前位置:
首页
文章
数据库
详情

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

免责申明:本站发布的内容(图片、视频和文字)以转载和分享为主,文章观点不代表本站立场,如涉及侵权请联系站长邮箱:xbc-online@qq.com进行反馈,一经查实,将立刻删除涉嫌侵权内容。