使用order by和group by的分析


mysql 写sql的顺序:
        select -> from-> where->group by->having->order by. 
但mysql的解析器执行顺序:
        from-> where->group by->having->select->order by.
所以,从执行的流程来看,是先group by 然后在 order by.
order by拿到的结果里已经是group by以后的结果.
因此,order by的字段必须是group by 里面已经存在的字段.
---------------------
 
GROUP BY 和 ORDER BY一起使用时,ORDER BY要在GROUP BY的后面。
group by a,b,c       则a,b,c三个字段是按照先按a字段对数据行进行排序,再按b字段对那些字段a为同一个值的数据行进行排序,再再按c字段对那些字段a为同一个值且字段b为同一个值的数据行进行排序
order  by a,b,c   也是如此
故而
表T 有a,b,c三个字段,按a分组再按c排序的方法如下:
select * from T order  by a,c//两个字段顺序不能颠倒
或者
select * from T group  by a,c//两个字段顺序不能颠倒
---------------------


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM