在mysql 查询时候,遇到如下错误:
Expression #2 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'XXX' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
解决的办法:
SELECT @@GLOBAL.sql_mode;
找出默认的配置,然后删除配置里面的only_full_group_by,再赋值给原来的
set @@GLOBAL.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
修改完成之后,需要重启一下数据库才可以生效 : service mysqld start
PS:
安装Mysql之后默认的only_full_group_by是打开的,这就意味着在这个模式下,我们使用分组查询时,出现在select、order by 字段后面的只能是group by后面的分组字段,或使用聚合函数包裹着的字段。
那么这个设置存在的意义是什么?
规范化书写
网上都是关闭这个设置的,很少提出怎么使用这个模式,下次发现再来补充