解决which is not functionally dependent on columns in GROUP BY clause;...sql_mode=only_full_group_by mysql 排序问题
mysql 排序问题)
问题产生原因:数据库设置了only_full_group_by模式 版本5.7以后语法严谨
假设查询语句是下面这样:
下面展示一些 内联代码片
。
select
id,name,sex
from t_person
group by create_time
order by age
需要把create_time、age,放到select的字段里,因为名字可能对应多个,所以需要加上any_value,修改后的结果如下
select
id,any_value(name),sex,create_time,age
from t_person
group by create_time
order by age
2. 关闭ONLY_FULL_GROUP_BY模式。关于这个模式,是mysql提供的安全检查。 直接设置为一个新值就完事了:
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';
如果通过这种方法设置,重启mysql似乎就会失效
3. 通过更改my.cnf实现。本质上和2是一样的,都是关闭ONLY_FULL_GROUP_BY模式。我是通过yum安装的mysql,所以直接编辑/etc/my.cnf,在文件的最后加上
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
ystemctl restart mysqld.service
然后就可以了