where,group by,having,order by执行顺序和编写顺序

本文介绍了MySQL中数据分组(Group By)与Where、Having、Order By的使用。阐述了Group By分别与Where、Having、Order By结合的语法,说明了Having和Where的用法区别,还指出当查询语句同时出现这些关键字时,执行顺序为Where、Group By、Having、Order By。

【一】数据分组(group by ):
1.group by 和where

select 列a,聚合函数(聚合函数规范) from 表明 where 过滤条件 group by 列a 

2.group by 和having

select 列a,聚合函数(聚合函数规范) from 表明 group by 列a  having 过滤条件 ;

3.group by 和order by

select 列a,聚合函数(聚合函数规范) from 表明 group by 列a  order by  条件;

【二】使用having字句对分组后的结果进行筛选,语法和where差不多:having 条件表达式

需要注意having和where的用法区别: 
1.having只能用在group by之后,对分组后的结果进行筛选(即使用having的前提条件是分组)。 
2.where肯定在group by 之前,即也在having之前。 
3.where后的条件表达式里不允许使用聚合函数,而having可以。 
4.having后只能跟group by后边字段条件 或者 非group by字段的聚合函数条件(按组查询);

【三】当一个查询语句同时出现了where,group by,having,order by的时候,执行顺序: 

Group By 和 Having, Where ,Order by这些关键字是按照如下顺序进行执行的:Where, Group By, Having, Order by。 
SELECT的语法顺序就是起执行顺序

FROM 
WHERE (先过滤单表/视图/结果集,再JOIN) 
GROUP BY 
HAVING (WHERE过滤的是行,HAVING过滤的是组,所以在GROUP之后) 
ORDER BY

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值