Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-查询/SQL语句

全面掌握MS ACCESS SQL(22)

时 间:2018-01-11 16:17:26
作 者:Big Young   ID:252  城市:襄阳
摘 要:    SELECT查询中记录的筛选与排序。
正 文:

    第四节 Select查询中记录的筛选与排序

    前面说明了如何控制记录的列与行的返回,这里只是针对满足条件的记录中对行列的控制。下面我们来学习关于如何在众多的记录中找到我们需要的记录,即记录的筛选问题,在ACCESS SQL中记录的筛选是通过Where子句来实现的,下面就来说明一下如何编写Where子句,使用示例来说明各种可在Where子句中使用的技术。

    一、通过使用条件来限制返回结果

    SQL语句中,Where子句指定查询的条件,只有满足条件的记录才会包含在返回的结果集中。查询条件类似于公式,它是一个可能由字段引用、运算符和常量组成的字符串,查询条件是一种表达式。

    下表显示了一些示例条件并阐释其工作原理。

条件

说明

>25 and <50

此条件适用于数字字段,如 Price UnitsInStock。它仅包含 Price UnitsInStock 字段内有大于 25 且小于 50 的值的记录。

DateDiff ("yyyy", [BirthDate], Date()) > 30

此条件适用于日期/时间字段,如 BirthDate。查询结果中只包含某人的出生日期与当前日期之间的年份差距大于 30 的记录。

Is Null

此条件可以应用于所有类型的字段以显示字段值为 null 的记录。

    正如上表所示,根据要应用条件的字段的数据类型以及你的特定要求,这些条件可能看上去彼此有很大的不同。某些条件很简单,且使用的是基本运算符和常量。另外的一些则很复杂,且使用的是函数以及特殊运算符,并包含字段引用。

    为了加深对Where子句语法的理解和熟练运用,我们来看一些实例,例如,假设我们希望获得某位客户的电话号码,但只记得该客户的姓氏是“王,可以使用Where子句来限制结果,以便查找所需的电话号码,而无需在数据库中查看所有电话号码。假设姓氏存储在名为“姓氏的字段中,带Where子句的查询如下所示:

    Select *

FROM 客户

Where 姓氏='';

    再看一例,可以把条件指定的更准确一些:

    Select 姓氏 & 名字 AS 姓名, 公司, 职务, 业务电话

FROM 客户

Where 姓氏='' AND 名字='炫皓';

    这样我们就在众多的记录中筛选出我们想要的记录,指定的条件越准确,定位的记录就越准确。Where子句可以包含达40个由逻辑运算符(例如AndOr)连接的表达式,还需要说明的是当输入包含空格或标点的字段名时,必须将其放在中括号 ([])中,即将名用方括号括起来。

    二、用ORDER BY子句对返回的记录进行排序

    Access中的ORDER BY子句在指定一个字段列表,返回的记录集依据这些字段按升序或降序进行排序。其基本语法如下:

Select fieldlist

FROM table

Where selectcriteria

[ORDER BY field1 [ASC | DESC ][, field2 [ASC | DESC ]][, ...]]]

    ORDER BY子句的Select语句包含以下部分:

部分

说明

Fieldlist

要与任何字段名别名、SQL 聚合函数、选择谓词(ALLDISTINCTDISTINCTROW TOP)或其他 Select 语句选项一起进行检索的字段的名称。

Table

从中检索记录的表的名称。

Selectcriteria

选择条件。如果语句包含 Where 子句,则在 Where 条件应用于记录之后,Microsoft Access 数据库引擎将对值进行排序。

field1, field2

要在其上对记录进行排序的字段名称。

    orDER BY是可选的。但是,如果想让数据按用户需要的顺序显示,则必须使用ORDER BY。默认的排序顺序为升序(A Z0 9)。以下两个示例将员工姓名按照姓氏顺序进行排序:

    示例一:

    Select 姓氏, 名字

FROM 员工

ORDER BY 姓氏;

示例二:

Select 姓氏, 名字

FROM 员工

ORDER BY 姓氏 ASC;

若要按降序顺序(Z A9 0)进行排序,请将DESC保留字添加到想要按降序顺序进行排序的每个字段的末尾。以下示例将选择薪资,然后将它们按降序顺序进行排序:

    Select 姓氏, 薪资

FROM 员工

ORDER BY 薪资 DESC, 姓氏;

如果在ORDER BY子句中指定包含MemoOLE对象数据的字段,则会出现错误。Microsoft Access数据库引擎不会对这些类型的字段进行排序。

    orDER BY通常是SQL语句中的最后一项。可以在ORDER BY子句中添加多个字段。记录首先按ORDER BY之后第一个字段进行排序。然后,在该字段中具有相等值的记录将按所列的第二个字段中的值进行排序,依次类推。



Access软件网QQ交流群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助