关于MySQL的order by与group by的组合使用

group by会用吧?order by也会用吧?可是,同时使用的时候,结果却有了出入?

那么,那么在你郁闷的时候,静下心来思考吧……


在group by 和order by同时使用的时候,你的排序策略(即asc or desc)会直接影响结果和写法的

分析

1.group by 先于order by执行

2.group by 的时候 会首先对结果进行排序 然后再分组的

3.group by 的排序是升序的

4.如果你只是排分组字段的顺序为升序,那么你都可以不用order by 直接group by的结果就ok

5.如果是降序 或者其他字段 那么 可能你类似这样的写法

select *  from table group by xxx order by  xxx;

得到的结果就可能不对的


方案

如果你想得到正确的结果 就要

select * from (select *  from table  order by  xxx desc)temp group by xxx ;

或者再加order by 得到你需要的排序


注意

采用先排序后分组的写法后,where条件的位置请小心啦

select * from (select *  from table  order by  xxx desc)temp  where column1='xxx' group by xxx ;#注意where写在这里会导致排序的工作,所以这个写法极可能导致错误

select * from (select *  from table where column1='xxx'  order by  xxx desc)temp  group by xxx ;#这是推荐写法



(ps:be always thinking……)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值