HAVING 和 WHERE 的使用

HAVING 的使用范围大于 WHERE,WHERE只能过滤行,而HAVING除了能过滤行还能过滤分组。

重要区别:在GROUP BY之前,HAVING 和 WHERE的用法一样,效果也一样;

                  在GROUP BY 之后,只能使用 HAVING,用于过滤分组之后的表,实际:上都是在GROUP BY之后使用 HAVING

eg:表中保存的数据是会员id,会员姓名,会员等级,会员注册时间。目标是取出2018-01-01日期之后注册的会员等级大于V2的会员数。

这样就需要同时使用 WHERE 和 HAVING 过滤,前面WHERE 过滤日期,GROUP BY 后过滤会员等级。

SELECT COUNT(user_id), user_level 
FROM table_name 
WHERE date_time > '2018-01-01' 
GROUP BY user_level
HAVING user_level IN ('V3','V4','V5') 

 

SELECT 子句的顺序

 

posted @ 2018-06-21 09:52  nichoo的博客  阅读(752)  评论(0编辑  收藏  举报