精通MS-ACCESS SQL之基础篇(08)
时 间:2017-11-24 11:22:18
作 者:Big Young ID:252 城市:襄阳
摘 要: SQL中WHERE与HAVING两个子句的用法。
正 文:
第八节 SQL查询中条件筛选子句:Where和HAVING
在对数据库表的查询中,并不总是查询全部记录,而大多数情况下是只查询我们关心的一部分记录,这就要用到筛选子句。在SQL查询中,having和where都是用来作筛选用的,那它们有什么相同与不同之处呢,现在我们来研究一下这个问题。
一、Where子句的基本用法
where是MS Access SQL语句的一个重要组成部分,通过where子句后的条件对数据表中的数据进行查询,修改,删除等。
Where 子句具有以下基本语法:
Where field = criterion
例如,在我们前面使用的示例数据库中,假设我们希望获得某位同学的电话号码,但我们只记得该同学的姓氏是“张”,这时我们就可以使用Where子句来限制查询结果,以便查找到所需的电话号码,而无需在数据库中查看所有电话号码。对“学生信息”表,我们可以这样使用Where子句,如下所示:
Select * FROM 学生信息Where [姓名] LIKE '张%'
如图8-1所示:
图8-1:Where子句示例
查询结果如图8-2所示:
图8-2:Where子句筛选结果
二、HAVING子句的基本用法
Access SQL中的HAVING字句用于指定包含GROUP BY子句的Select语句中显示哪些分组记录。在GROUP BY对记录进行分组之后,HAVING将显示由GROUP BY子句分组的满足HAVING子句后条件的所有记录。
HAVING子句具有以下基本语法:
Select fieldlist
FROM table
Where selectcriteria
GROUP BY groupfieldlist
[HAVING groupcriteria]
在这里“groupcriteria”是对分组进行筛选的条件,此表达式用来确定要显示哪些分组记录。
如在前面几节中,我们要统计“学生信息”表中各民族学生的人数,使用过这样的查询:
Select 民族, COUNT(姓名) AS 人数 FROM 学生信息 GROUP BY 民族;
如图8-3所示:
图8-3:HAVING子句用法示例
其查询后统计出来的结果如图8-4:
图8-4:使用HAVING子句进行筛选的结果
三、Where与HAVING两个子句同时应用
在选择查询中,有时需要同时使用Where与HAVING两个子句来对记录进行筛选,如在我们的示例数据库中,如果要对“学生信息表”中的不同民族的同学男女各有多少人进行统计,我们可以使用“Select 民族, COUNT(姓名) AS 人数 FROM 学生信息 Where 性别 = '男' GROUP BY 民族;”进行了查询,这样我们就得出各个民族学生的人男生人数,如图8-5:
图8-5:同时使用Where与HAVING子句示例
查询结果如图8-6所示:
图8-6:Where与HAVING同时作用的筛选结果
四、Where与HAVING两个子句的区别
having和where都是用来进行条件筛选的,having是筛选组中的记录,而where是筛选整个表中的记录。Where子句不仅用于选择查询语句中,也广泛应用于Insert、Update及Delete等操作查询语句中,而having只能与group by子句配合使用,对分组进行筛选,只用在选择查询语句中。
当一个语句中同时含有where、group by、 having及汇总函数时,执行顺序如下:
1、执行where子句查找符合条件的数据;
2、使用group by子句对数据进行分组;对group by子句形成的组运行汇总函数计算每一组的值;
3、最后用having子句去掉不符合条件的组。
4、having子句和where子句都可以用来设定限制条件以使查询结果满足一定的条件限制。having子句限制的是组,而不是行。where子句中不能使用聚集函数,而having子句中可以。
Access软件网官方交流QQ群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 统计当月之前(不含当月)的记录...(03.11)
- 【Access Inputbo...(03.03)
- 按回车键后光标移动到下一条记录...(02.12)
- 【Access Dsum示例】...(02.07)
- Access对子窗体的数据进行...(02.05)
- 【Access高效办公】上月累...(01.09)
- 【Access高效办公】上月累...(01.06)
- 【Access Inputbo...(12.23)
- 【Access Dsum示例】...(12.16)

学习心得
最新文章
- 仓库管理实战课程(9)-开发往来单...(04.02)
- 仓库管理实战课程(8)-商品信息功...(04.01)
- 仓库管理实战课程(7)-链接表(03.31)
- 仓库管理实战课程(6)-创建查询(03.29)
- 仓库管理实战课程(5)-字段属性(03.27)
- 设备装配出入库管理系统;基于Acc...(03.24)
- 仓库管理实战课程(4)-建表操作(03.22)
- 仓库管理实战课程(3)-需求设计说...(03.19)
- 仓库管理实战课程(2)-软件背景和...(03.18)
- 仓库管理实战课程(1)-讲师介绍(03.16)