本文是关于 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 子句的条件,请参阅查询条件示例一文。