摘要:在本教程中,您将学习如何使用 MySQL IN
运算符来确定指定值是否与值列表中的任何值匹配。
MySQL IN 运算符简介
IN
运算符允许您确定某个值是否与值列表中的任何值匹配。 IN
运算符的语法如下:
value IN (value1, value2, value3,...)
Code language: SQL (Structured Query Language) (sql)
如果value
等于列表中的任何值( value1
、 value2
、 value3
等),则IN
运算符返回 1 (true)。否则,返回 0。
在这个语法中:
- 首先,在
IN
运算符左侧指定要测试的值。该值可以是列或表达式。 - 其次,指定要在括号中匹配的以逗号分隔的值列表。
IN
运算符在功能上等同于多个OR
运算符的组合:
value = value1 OR value = value2 OR value = value3 OR ...
Code language: SQL (Structured Query Language) (sql)
以下示例返回 1,因为 1 在列表中:
SELECT 1 IN (1,2,3);
+--------------+
| 1 IN (1,2,3) |
+--------------+
| 1 |
+--------------+
1 row in set (0.00 sec)
Code language: plaintext (plaintext)
以下示例返回 0,因为 4 不在列表中:
SELECT 4 IN (1,2,3);
+--------------+
| 4 IN (1,2,3) |
+--------------+
| 0 |
+--------------+
1 row in set (0.00 sec)
Code language: plaintext (plaintext)
实际上,您将使用IN
运算符在SELECT
、 DELETE
和UPDATE
语句的WHERE
子句中形成条件。此外,您还将在包含子查询的查询中使用IN
运算符。
MySQL IN 运算符和 NULL
一般来说, IN
运算符在两种情况下返回NULL
:
- 运算符左侧的
value
NULL。 - 该值不等于列表中的任何值,并且列表中的值之一为 NULL。
以下示例返回 NULL,因为 IN 运算符左侧的值为 NULL:
SELECT NULL IN (1,2,3);
Code language: PHP (php)
+-----------------+
| NULL IN (1,2,3) |
+-----------------+
| NULL |
+-----------------+
1 row in set (0.00 sec)
Code language: plaintext (plaintext)
以下示例也返回 NULL,因为 0 不等于列表中的任何值,并且列表中有一个 NULL:
SELECT 0 IN (1 , 2, 3, NULL);
Code language: PHP (php)
+-----------------------+
| 0 IN (1 , 2, 3, NULL) |
+-----------------------+
| NULL |
+-----------------------+
1 row in set (0.00 sec)
Code language: plaintext (plaintext)
以下示例也返回 NULL,因为 NULL 不等于列表中的任何值,并且列表中有一个 NULL。请注意,NULL 不等于 NULL。
SELECT NULL IN (1 , 2, 3, NULL);
Code language: PHP (php)
MySQL IN 运算符示例
请参阅示例数据库中的以下offices
表:

以下示例使用IN
运算符查找位于美国和法国的办事处:
SELECT
officeCode,
city,
phone,
country
FROM
offices
WHERE
country IN ('USA' , 'France');
Code language: SQL (Structured Query Language) (sql)
+------------+---------------+-----------------+---------+
| officeCode | city | phone | country |
+------------+---------------+-----------------+---------+
| 1 | San Francisco | +1 650 219 4782 | USA |
| 2 | Boston | +1 215 837 0825 | USA |
| 3 | NYC | +1 212 555 3000 | USA |
| 4 | Paris | +33 14 723 4404 | France |
+------------+---------------+-----------------+---------+
4 rows in set (0.01 sec)
Code language: plaintext (plaintext)
您还可以使用OR
运算符得到相同的结果,如下所示:
SELECT
officeCode,
city,
phone
FROM
offices
WHERE
country = 'USA' OR country = 'France';
Code language: SQL (Structured Query Language) (sql)
如果列表有很多值,您需要使用多个OR
运算符构造一个非常长的语句。因此, IN
运算符允许您缩短查询并使其更具可读性。
概括
- 使用
IN
运算符检查某个值是否在一组值中。 - 使用
IN
运算符构成WHERE
子句的条件。
本教程有帮助吗?