打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【Access】SQL语句中WHERE子句和HAVING 子句的异同


初学SQL语句的时候,很多朋友总是无法理解HAVING 子句和WHERE子句之间区别,今天我们就来细细谈一谈这个问题。首先列出它们之间的相同和区别,然后我们举例说明。

一、相同点:

二者的相同点是在功能上来说的,HAVING子句和WHERE子句都可以用来设定限制条件以使查询结果满足一定的条件限制。

二、区别如下:

1、WHERE是先分组再筛选记录,WHERE在聚合前先筛选记录.也就是说作用在GROUP BY 子句和HAVING子句前;而 HAVING子句在聚合后对组记录进行筛选。

2、在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。而HAVING子句中可以。HAVING 子句是聚组函数唯一出现的地方。

3、在查询过程中聚合语句(SUM,MIN,MAX,AVG,COUNT)要比HAVING子句优先执行。而WHERE子句在查询过程中执行优先级高于聚合语句。

4、HAVING 子句中的每一个元素必须出现在SELECT列表中。

例如,下图是一份销售业绩表:


现在假如我们想要查询销售额大于4000的记录,我们可以建立如下的SQL查询:


SELECT 销售编号, 姓名, 销售额

FROM 销售表

WHERE 销售额>4000

运行的到如下的结果:


那么现在假如我们想要查询销售额总额大于4000的员工以及它们的销售总额,怎么办呢?这时候我们可以建立如下的SQL查询:


SELECT 姓名, Sum([销售额]) AS 该员工的销售总额

FROM 销售表

GROUP BY 姓名

HAVING  Sum([销售额]) >4000

运行的到如下的结果:


看到这里,请仔细想一想以上两个查询是不是明显感觉不一样啊?第二个查询就是以姓名来分组,求出每个员工的销售总额,然后再以这个销售总额为条件进行判断,而第一个查询并没有涉及到分组聚合,直接使用WHERE筛选记录。你Get到了嘛?

快捷查看
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Excel VBA ADO SQL入门教程010:分组聚合
SQL Server 数据库设计--SELECT高级查询语句之三
SQL中关于where后面不能放聚合函数(如sum等)的解决办法
高效地进行SQL语句设计应遵循哪些基本方法
sql学习资料
深入浅出SQL系列教程-新手入门篇
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服