sql_mode:ONLY_FULL_GROUP_BY报错问题Expression #2 of SELECT list is not in GROUP BY clause and contain...
- 数据库
- 平方
- 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()函数会选择同一组数据中的第一条来显示
免责申明:本站发布的内容(图片、视频和文字)以转载和分享为主,文章观点不代表本站立场,如涉及侵权请联系站长邮箱:xbc-online@qq.com进行反馈,一经查实,将立刻删除涉嫌侵权内容。