当前位置: 代码网 > it编程>数据库>Mysql > mysql5.7版本先order by再group by失效的问题及解决

mysql5.7版本先order by再group by失效的问题及解决

2026年03月28日 Mysql 我要评论
mysql5.7版本先order by再group by失效最近发现了一个mysql5.7版本与5.6版本在group by子句中使用order by导致order by失效的情况,记录一下。sql如

mysql5.7版本先order by再group by失效

最近发现了一个mysql5.7版本与5.6版本在group by子句中使用order by导致order by失效的情况,记录一下。

sql如下:

select
	* 
from
	( select * from risk order by data_month desc ) a 
group by
	a.sale_code;

因为月份字段是varchar,所以只能用order by进行排序找最新月份数据,这样写在mysql5.6版本是正常的,查询的最新月份的数据。但是在mysql5.7版本,order by被优化掉了,并没有生效。

解决方案

方案一

这是我看网上最多的解决方案,用一个超级大的limit放在order by后面

select
	* 
from
	( select * from risk order by data_month desc limit 100000000  ) a 
group by
	a.sale_code;

方案二

在order by前面加group by id

select
	* 
from
	( select * from risk group by id order by data_month desc ) a 
group by
	a.sale_code;

方案三

加distinct

select
	* 
from
	( select distinct * from risk order by data_month desc ) a 
group by
	a.sale_code;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com