Skip to main content

MySQL IN-检查值是否与值列表中的任何值匹配

MySQL IN操作符简介

IN运算符允许您确定一个值是否与值列表中的任何值匹配。以下是IN运算符的语法:

value IN (value1, value2, value3,...)

如果值等于列表中的任何值(value1、value2、value3,…),IN运算符将返回1(true)。否则,它返回0。

在这种语法中:

IN运算符在功能上等同于多个OR运算符的组合:

value = value1 OR value = value2 OR value = value3 OR ...

以下示例返回1,因为列表中有1:

SELECT 1 IN (1,2,3);
+--------------+
| 1 IN (1,2,3) |
+--------------+
| 1 |
+--------------+
1 row in set (0.00 sec)

以下示例返回0,因为4不在列表中:

SELECT 4 IN (1,2,3);
+--------------+
| 4 IN (1,2,3) |
+--------------+
| 0 |
+--------------+
1 row in set (0.00 sec)

实际上,您将使用In运算符在SELECT、DELETE和UPDATE语句的WHERE子句中形成条件。此外,还将在包含子查询的查询中使用IN运算符。

MySQL在运算符中为空

通常,IN运算符在两种情况下返回NULL:

以下示例返回NULL,因为IN运算符左侧的值为NULL:

SELECT NULL IN (1,2,3);
+-----------------+
| NULL IN (1,2,3) |
+-----------------+
| NULL |
+-----------------+
1 row in set (0.00 sec)

以下示例还返回NULL,因为0不等于列表中的任何值,并且列表中有一个NULL:

SELECT 0 IN (1 , 2, 3, NULL);
+-----------------------+
| 0 IN (1 , 2, 3, NULL) |
+-----------------------+
| NULL |
+-----------------------+
1 row in set (0.00 sec)

以下示例还返回NULL,因为NULL不等于列表中的任何值,并且列表中有一个NULL。请注意,NULL不等于NULL。

SELECT NULL IN (1 , 2, 3, NULL);

操作符示例中的MySQL

请参见示例数据库中的以下Office表:

MySQL IN Operator - Sample Table

以下示例使用IN运算符查找位于美国和法国的办事处:

SELECT 
officeCode,
city,
phone,
country
FROM
offices
WHERE
country IN ('USA' , 'France');
+------------+---------------+-----------------+---------+
| 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)

使用OR运算符也可以得到相同的结果,如下所示:

SELECT 
officeCode,
city,
phone
FROM
offices
WHERE
country = 'USA' OR country = 'France';

如果列表中有许多值,则需要使用多个OR运算符构造一个非常长的语句。因此,IN运算符允许缩短查询并使其更具可读性。

总结