SQL中的IN和NOT IN运算符
1.IN
运算符的基本用法:在SQL中,IN
运算符与WHERE
子句结合使用,用于匹配列表中的值。例如,SELECT first_name, country FROM Customers WHERE country IN ('USA', 'UK');
将选择 country
列中值为 USA 或 UK 的行。
2.NOT IN
运算符的用途:NOT IN
运算符用于排除与列表中值匹配的行,返回除这些行之外的所有行。例如,SELECT first_name, country FROM Customers WHERE country NOT IN ('UK', 'UAE');
将选择 country
列中值不是 UK 或 UAE 的行。
3.结合子查询使用:IN
运算符可以与子查询结合使用,以从另一个表中获取值列表。例如,SELECT customer_id, first_name FROM Customers WHERE customer_id IN (SELECT customer_id FROM Orders);
将选择在Orders
表中有记录的Customers
表中的客户。
IN
运算符与 [WHERE](/tutorials/sql/select)
子句一起使用,用于匹配列表中的值。
示例
SELECT first_name, country
FROM Customers
WHERE country IN ('USA');
这里,SQL 命令从 Customers
表中选择 country
值为 'USA'
的行。
SQL IN
语法
SQL IN
运算符的语法是:
SELECT column1, column2, ...
FROM table
WHERE column IN (value1, value2, ...);
这里,
column1, column2, ...
是表的列table
是我们从中选择数据的表名column
是比较值的地方IN
运算符指定了column
值应该比较的值value1, value2, ...
是column
值比较的值
例如,
SELECT first_name, country
FROM Customers
WHERE country IN ('USA', 'UK');
这里,如果 country
是 USA 或 UK,SQL 命令选择行。
SQL IN
运算符与列
IN
运算符也可以用于选择在给定字段中存在某个特定值的行。让我们看一个示例来阐明它。
SELECT first_name, country
FROM Customers
WHERE 'USA' IN (country);
这里,如果 USA
值存在于 country
字段中,SQL 命令选择行。
SQL NOT IN
运算符
NOT IN
运算符用于排除与列表中值匹配的行。它返回除被排除行之外的所有行。例如,
SELECT first_name, country
FROM Customers
WHERE country NOT IN ('UK', 'UAE');
这里,如果 UK 或 UAE 不在 country
列中,SQL 命令选择行。
注意: IN
运算符的工作方式被 NOT
运算符反转。它们基本上是两个合并的运算符。要了解更多,请访问 SQL 的 AND、OR 和 NOT 运算符。
SQL IN
运算符与重复值
顺便说一下,IN
运算符忽略列表中的重复值。例如,看一下下面的代码。
```sql exec-- IN
忽略重复的 'USA' 值
SELECT first_name, country FROM Customers WHERE country IN ('USA', 'UK', 'USA');
上面的代码等同于下面的代码。
```sql exec-- 选择生活在美国或英国的客户
SELECT first_name, country
FROM Customers
WHERE country IN ('USA', 'UK');
SQL IN
运算符与子查询
假设我们只想获取那些下过订单的客户的详细信息。我们可以使用子查询来实现,如下所示,
-- 子查询放在 `IN` 关键字后的括号内
SELECT customer_id, first_name
FROM Customers
WHERE customer_id IN (
SELECT customer_id
FROM Orders
);
这里,SQL 命令
- 使用子查询从
Orders
表中选择customer_id
, - 从
Customers
表中选择行,其中customer_id
在子查询的结果集中,即如果 `
customer_id也在
Orders` 表中。
要了解更多,请访问 SQL 子查询。