MySQL 先排序再分组不生效
前言
最近在写sql时遇到一个问题,业务场景下需要对sql进行先排序再分组,故使用了子查询,先对查询结果做排序,再用子查询嵌套将查询结果做分组。sql正常执行没有问题,但是结果并不是我想要的顺序。百度查了一下,这是MySQL5.7版本特有的bug,这里记录一下解决方案。
解决方案
在子查询排序中加limit(此时limit的值一定要尽可能的大 , 否则数据达到一定程度后查询不到数据)。
select tmp.* from
(select userid, empno, created from record where empno = #{empno}
order by created desc limit 99999999999) tmp
group by tmp.userid;