MYsql5.7版本之后,用group by查询不在分组字段遇到的坑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYsql5.7版本之后,用group by查询不在分组字段遇到的坑相关的知识,希望对你有一定的参考价值。

参考技术A select uid,name from (select uid,name from aa union select uid,name from bb) t group by uid order by uid desc LIMIT 10;

运行上面那个SQL会报错,因为5.7版本之后的mysql不在group by里的字段 跟在select会报错解决办法是,用函数 any_value(字段名)

select any_value(name),max(uid)from (select uid,name from aa union select uid,name from bb) t group by uid order by uid desc LIMIT 10;
运行上面的SQL 不报错了

mysql 8解决group by 不支持

mysql5.7及以后的版本 select查询字段未出现在group by 中是会报错的  需要在命令行中执行以下命令:

这只是单次生效,重启Mysql后会失效,如果要永久生效需要修改my.cnf

set @@global.sql_mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION‘;

set @@session.sql_mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION‘;

以上是关于MYsql5.7版本之后,用group by查询不在分组字段遇到的坑的主要内容,如果未能解决你的问题,请参考以下文章

解决Mysql5.7以上版本, 使用group by抛出Expression #1 of SELECT list is not in GROUP BY clause and contains no异常

MYSQL5.7版本sql_mode=only_full_group_by问题

MYSQL5.7版本sql_mode=only_full_group_by问题

MYSQL5.7版本sql_mode=only_full_group_by问题

MYSQL5.7特性之GROUP BY 排序

Mysql5.7中子查询时order by与group by合用无效的解决办法