如何:包含或排除行
若要限制“选择”查询所返回的行数,请创建搜索条件或筛选判据。 在 SQL 中,搜索条件出现在语句的 WHERE 子句中,或者如果正在创建聚合查询,则搜索条件出现在 HAVING 子句中。
提示
也可使用搜索条件指出受“更新”、“插入结果”、“插入值”、“删除”或“生成表”查询影响的行。
当运行查询时,数据库引擎检查搜索条件并将其应用到正在搜索的表中的每一行。 如果该行满足搜索条件,则包括在查询中。 例如,一个查找特定区域内所有职员的搜索条件可以是:
region = 'UK'
若要建立在结果中包括行的判据,可以使用多个搜索条件。 例如,下列搜索判据由两个搜索条件组成。 仅当某行满足这两个条件时,查询才在结果集内包括该行。
region = 'UK' AND product_line = 'Housewares'
可以用 AND 或 OR 组合这些条件。 上面的示例使用了 AND。 相反,下面的判据使用的是 OR。 结果集将包括只满足其中一个搜索条件或两个搜索条件都满足的任何行:
region = 'UK' OR product_line = 'Housewares'
甚至可以组合单个列上的搜索条件。 例如,下面的判据组合了区域列上的两个条件:
region = 'UK' OR region = 'US'
有关组合搜索条件的详细信息,请参见下列主题:
示例
下面是使用各种运算符和行条件的查询的一些示例:
文本 单个文本值、数值、日期值或逻辑值。 下面的示例使用一个文本在所有行中查找在英国的职员:
WHERE region = 'UK'
列引用 比较一个列中的值和另一个列中的值。 下面的示例在 products 表中搜索所有生产成本低于运输成本的行:
WHERE prod_cost < ship_cost
函数 对函数的引用,数据库后端可以解析该函数以计算搜索值。 该函数可以是由数据库服务器定义的函数或者是返回标量值的用户定义函数。 下面的示例搜索今天发出的订单(GETDATE( ) 函数返回当前日期):
WHERE order_date = GETDATE()
NULL 下面的示例在 authors 表中搜索所有名字已存档的作者:
WHERE au_fname IS NOT NULL
计算 涉及文本、列引用或其他表达式的计算结果。 下面的示例搜索 products 表,查找零售价格高于生产成本两倍的所有行:
WHERE sales_price > (prod_cost * 2)