精通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)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access快速开发平台--对上传...(11.22)
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)
- 微软Access邀测新Monaco...(11.12)
- Access列表框左右互选、列表框...(11.11)
- 高效率在导入数据前删除记录(11.10)
- Access报价单转订单示例代码(11.08)
- Access系统自带的日期选择器不...(11.08)