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问题