【总结】mysql 如何实现先排序后分组

发表于2014-10-21 16:55  |  次阅读  |  0条评论  |   作者:siru90

mysql如果在一条sql语句里面同时用到group by 和order by的话,group by要写在 order by的前面,如果需要在group by之前先排序,你把order by 写前面的话,会报错,无法执行。
今天在做项目的时候刚好碰到这个问题,查了些资料都没有什么好的解决方法,正打算放弃,用程序处理算了,后来想如果这样操作,日后数据多了,处理肯定很慢,因为我的sql是一个表的自连接,而且记录也很多,重复值也很多,下面是我的sql:
 select * from tbUser a left join tbUser b on a.iGameId = b.iGameId
 where a.sRtx='123' 
group by a.iId 
这样查询出来的数据,默认是group by的第一条记录,相同的iID的记录不会先进行排序再group by

本着再试试看,最终还是找到了解决方法,可以实现先排序 再分组

1、可以先把数据按照你的条件要求,使用order by排好序
2、在查询sql外面,再包一层查询,使用group by
例如: select * from (select * from t where 你的查询条件 order by 你的排序字段) group by 你的分组字段


下面贴出我写的sql,仅供参考:
select * from 
 (select a.iId, a.iGameId, a.sRole, a.iEnable, b.sRtx, b.iEnable exaEnable from tbUser a left join tbUser b on a.iGameId = b.iGameId where a.sRtx='v_rgzhou' order by b.iEnable desc, b.sRole) 
 as t group by iId;

本站关键字:sunny90 web开发 数据库 移动开发 服务器 Nginx Mysql PHP
Copyright © sunny90版权所有 power by sunny90.com  
湘ICP备14012284号-1,粤公网安备 44030602000307号