【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到了嘛?

快捷查看
(0)

相关推荐

  • SQL Server 数据库设计--SELECT高级查询语句之三

    在前几篇文章中介绍了 SQL SERVER 数据库的设计,以及 SELECT 语句的简单使用方法,这篇文章继续介绍其他高级查询方法. SQL Server 数据库设计 SQL Server 数据库设计 ...

  • 【Access】SQL语句中别名的使用之字段名别名

    别名主要使我们得到的查询结果更容易理解和阅读,关于别名的使用,我们还是先看个例子吧,如下图是一份简易的销售表: 现在假如我们想要查询每个员工的总销售额,我们可以建立如下的SQL查询: 运行一下得到如下 ...

  • 【Access】SQL语句中别名的使用之表名别名

    大家好,上次课我们学习了SQL语句中别名的使用之字段名别名的用法,今天我们学习SQL语句中别名的使用之表名别名,顾名思义,表名别名就是给表取一个别名,那么你会问有什么用呢,瞎折腾吗?肯定不是啦,我们看 ...

  • 【Access】SQL语句中自然连接的使用

    大家好,上次课程我们讲了等值连接,本节课跟随小编来学习一下自然连接.自然连接是按照公共属性值相等的条件进行连接,是一种特殊的等值连接,公共属性值不相等的行会被删除,同时在结果中消除重复的属性列. 我们 ...

  • 【Access】SQL语句中内连接的使用

    大家好,上次课程我们讲了自然连接的使用,本节课再跟随小编来学习一下内连接.内连接的效果和等值连接是一样的,只不过在Access数据库中的操作不一样罢了,这里先放上内连接的SQL语法格式: SELECT ...

  • 【Access】SQL语句中全外连接的使用

    大家好,上次Access课程我们讲了右(外)连接使用,本节课再跟随小编来学习一下全外连接.全外连接是在两表进行自然连接,只把左表和右表要舍弃的都保留在结果集中,相对应的列上填NULL.全外连接的语法格 ...

  • 成功sql语句中直接写变量

    public static PagedResultInOut<T> SqlPage<T>(string sql, string order, int page, int siz ...

  • mybatis sql语句中 in() 长度为0或null的情况

    比如: select * from A where colName IN <foreach collection="moCodeList" item="item&q ...

  • oracle sql语句中like %参数%的用法

    oracle sql语句中like %参数%的用法,在网上找了很久没找到类似的帖子,因此分享一下我的收获,希望对看到的人有帮助 今天在处理oracle数据库数据merge的时候遇到一个问题: 在mer ...

  • SQL 语句中 where 条件后 写上1=1 是什么意思

    在编程过程中,经常会在代码中使用到"where 1=1",这是为什么呢? SQL注入 初次看到这种写法的同学肯定很纳闷,加不加where 1=1,查询不都一样吗?例如: selec ...