

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# WHERE 子句
<a name="sql-reference-where-clause"></a>

WHERE 子句会提取满足指定条件的记录。条件可以是数字或字符串比较，也可以使用 BETWEEN、LIKE 或 IN 运算符：请参阅[流式 SQL 运算符](sql-reference-streaming-operators.md)。可以使用 AND、OR 和 NOT 等逻辑运算符组合条件。

WHERE 子句类似于 [HAVING 子句](sql-reference-having-clause.md)。它适用于组，也就是说， WHERE 子句生成的结果是各个原始行，而 HAVING 子句生成的结果表示原始行的分组或聚合。

WHERE 和 HAVING 都可以出现在单个 SELECT 语句中。WHERE 从流或表中选择各个满足其条件（WHERE 条件）的行。GROUP BY 条件仅适用于 WHERE 条件选择的行。此类分组（例如“GROUP BY CustomerID”）可以根据 HAVING 条件进一步限定，然后选择指定分组中满足其条件的行的聚合。例如，“按客户编号分组总和 (ShipmentValue) > 3600” 将仅选择那些符合 WHERE 标准的各种货物的值加起来也超过 3600 的客户。

## 
<a name="sql-reference-where-clause-example"></a>

要查看此子句在 SELECT 语句中的位置，请参阅[SELECT 语句](sql-reference-select.md)。

条件必须是布尔谓词表达式。该查询仅返回谓词计算结果为 TRUE 的行；如果条件的计算结果为 NULL，则不会生成该行。

WHERE 子句中的条件不能包含窗口式聚合表达式，因为如果 where 子句条件导致行被删除，它将改变窗口的内容。

本指南中的 [JOIN 子句](sql-reference-join-clause.md)和 [HAVING 子句](sql-reference-having-clause.md)主题也对 WHERE 进行了讨论。