本文是关于 Access SQL 的一系列文章之一。 本文介绍如何编写 WHERE 子句,使用示例说明可在 WHERE 子句中使用的各种技术。

在 SQL 语句中,WHERE 子句指定对于包含查询结果中的值的记录,字段值必须满足的条件。

有关 Access SQL 的概述,请参阅 Access SQL:基本概念、词汇和语法一文。

本文内容

通过使用条件来限制结果

当使用数据来限制查询中返回的记录数目时,可使用 条件。 查询条件类似于公式,它是一个可能由字段引用、运算符和常量组成的字符串。 查询条件是一种 表达式。

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

条件

说明

>25 and <50

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

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

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

Is Null

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

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

重要: 如果某字段使用聚合函数,则无法在 WHERE 子句中指定该字段的条件。 可使用 HAVING 子句指定聚合字段的条件。 有关详细信息,请参阅文章 Access SQL:基本概念、词汇和语法以及 HAVING 子句

WHERE 子句语法

在 SELECT 语句中的 WHERE 子句中使用查询条件。

WHERE 子句具有以下基本语法:

WHERE field = criterion

例如,假设你希望获得某位客户的电话号码,但你只记得该客户的姓氏是 Bagel。 可以使用 WHERE 子句来限制结果,以便查找所需的电话号码,而无需在数据库中查看所有电话号码。 假设姓氏存储在名为 LastName 的字段中,WHERE 子句如下所示:

WHERE [LastName]='Bagel'

注意: WHERE 子句中的条件无需基于等值。 可以使用其他比较运算符,例如大于 (>) 或小于 (<)。 例如,WHERE [Price]>100

使用 WHERE 子句合并数据源

有时,可能需要基于具有匹配数据但数据类型不同的字段合并数据源。 例如,一个表中的字段可能是“数字”数据类型,你希望将此字段与其他表中的“文本”数据类型字段进行比较。

无法在具有不同数据类型的字段间创建联接。 若要基于具有不同数据类型的字段中的值合并两个数据源的数据,可使用 LIKE 关键字,创建一个 WHERE 子句,将一个字段用作另一个字段的条件。

例如,假设你希望仅当表 1 中的数据(表 1 中的文本字段)与表 2 中的数据(表 2 中的数字字段)匹配时,使用表 1 和表 2 中的数据。 WHERE 子句将类似以下:

WHERE field1 LIKE field2

若要详细了解如何创建用于 WHERE 子句的条件,请参阅查询条件示例一文。

页面顶端

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Office Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×