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 是分组显示,是聚合

posted @ 2022-03-14 20:43  学无止境_Aiden  阅读(1365)  评论(0编辑  收藏  举报