mysql where group by having order by执行优先级顺序


where、group by、having、order by、limit 用法也是这个顺序排列,在一个语句里不允许上述排序的后面的语法出现在前面语法。

where:定位
group by:分组
having:对查询结果的临时表进行筛选操作
order by:排序 默认升序,也可以加asc 加desc就是降序
limit:限制条目

select xx from xx where xx group by xx order by xxx;
select xx from xx group by xx having xx order by xxx;

where 跟having 后面都可以跟条件。但是又有很多区别
1 where 的字段必须是表中的字段
2 执行顺序是,先where 后 聚合
3 having 后面的字段不必须是表的字段
4 having 先聚合 后 条件
5 有时where 跟having 可以替换
6.group by 分组属性 having 分组过滤的条件,这个是按照分组属性进行分组,所有分组属性上值相同的记录被分为一组,作为结果中的一条记录,后面的having是对分组进行过滤的条件,必须和group by一起使用

distinct 跟group by的区别
两个的效果是一致的.都是返回相同的一条。但是。其实他们是不一样的。
1 distinct 是把重复行的数据剔除,只显示一条
2 group by 是分组显示,是聚合


免责声明!

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



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