SQL Server In运算符

您所在的位置:网站首页 sql语句中in怎么使用 SQL Server In运算符

SQL Server In运算符

2023-12-24 03:41| 来源: 网络整理| 查看: 265

在本教程中,将学习如何使用SQL Server IN运算符来检查值是否与列表中的任何值匹配。

SQL Server IN运算符简介

IN运算符是一个逻辑运算符,用于测试指定的值是否与列表中的任何值匹配。

以下显示了SQL Server IN运算符的语法:

column | expression IN ( v1, v2, v3, ...)

在上面语法中,

首先,column | expression指定要测试的列或表达式。其次,指定要测试的值列表。所有值必须与列或表达式的类型具有相同的类型。

如果列或表达式中的值等于列表中的任何值,则IN运算符的结果为TRUE。IN运算符等效于多个OR运算符,因此,以下谓词是等效的:

column IN (v1, v2, v3) column = v1 OR column = v2 OR column = v3

要取消IN运算符,请使用NOT IN运算符,如下所示:

column | expression NOT IN ( v1, v2, v3, ...)

如果列或表达式不等于列表中的任何值,则NOT IN运算符的结果为TRUE。除了值列表之外,还可以使用子查询返回带有IN运算符的值列表,如下所示:

column | expression IN (subquery)

在此语法中,子查询是一个SELECT语句,它返回单个列的值列表。请注意,如果列表包含NULL,则IN或NOT IN的结果将为UNKNOWN。

SQL Server OR运算符示例

我们将使用示例数据库中的products表进行演示,表的结构如下:

A. SQL Server IN带有值列表示例

以下语句查找价格为以下值之一的产品:89.99,109.99和159.99:

执行上面查询语句,得到以下结果 -

上面的查询等效于以下使用OR运算符的查询:

SELECT product_name, list_price FROM production.products WHERE list_price = 89.99 OR list_price = 109.99 OR list_price = 159.99 ORDER BY list_price;

要查找价格不是上述价格的产品,请使用NOT IN运算符,如以下查询中所示:

SELECT product_name, list_price FROM production.products WHERE list_price NOT IN (89.99, 109.99, 159.99) ORDER BY list_price;

执行上面查询语句,得到以下结果 -

B. SQL Server IN带有子查询的示例

以下查询返回位于商店编号(store_id)为1中,其数量大于或等于30的产品的产品编号列表:

SELECT product_id FROM production.stocks WHERE store_id = 1 AND quantity >= 30;

执行上面查询语句,得到以下结果 -

可以将上面的查询用作子查询,如以下查询所示:

SELECT product_name, list_price FROM production.products WHERE product_id IN ( SELECT product_id FROM production.stocks WHERE store_id = 1 AND quantity >= 30 ) ORDER BY product_name;

执行上面查询语句,得到以下结果 -

在这个例子中:

首先,子查询返回了产品ID列表。其次,外部查询检索产品名称和产品ID与子查询返回的任何值匹配的产品价格。

有关子查询的更多信息,请阅读子查询教程。

在本教程中,学习了如何使用SQL Server IN运算符来检查值是否与列表中的任何值或由子查询返回的值匹配。

  

上一篇: SQL Server数据查询 下一篇: SQL Server连接表


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3