SQL IN 运算符
SQL IN 运算符
The IN
operator 允许您在 WHERE
子句中指定多个值。
The IN
operator 是多个 OR
条件的简写。
示例
返回来自 'Germany', 'France', 或 'UK' 的所有客户
SELECT * FROM Customers
WHERE Country IN ('Germany', 'France', 'UK');
自己试一下 »
语法
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);
演示数据库
以下是从 Customers 表中选择的示例数据,用于示例
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 |
Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
4 |
Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
NOT IN
在 IN
运算符前面使用 NOT
关键字,您可以返回列表中不包含任何值的记录。
示例
返回所有不来自 'Germany', 'France', 或 'UK' 的客户
SELECT * FROM Customers
WHERE Country NOT IN ('Germany', 'France', 'UK');
自己试一下 »
IN (SELECT)
您还可以在 WHERE
子句中使用带有子查询的 IN
。
使用子查询,您可以返回主查询中存在于子查询结果中的所有记录。
示例
返回 Orders 表中具有订单的所有客户
SELECT * FROM Customers
WHERE CustomerID IN (SELECT CustomerID FROM Orders);
自己试一下 »
NOT IN (SELECT)
上面的示例结果返回了 74 条记录,这意味着有 17 个客户没有下任何订单。
让我们使用 NOT IN
运算符来检查一下是否正确。
示例
返回 Orders 表中没有下任何订单的所有客户
SELECT * FROM Customers
WHERE CustomerID NOT IN (SELECT CustomerID FROM Orders);
自己试一下 »