MySQL IN 运算符的用法
本文通过实例介绍了 MySQL 中如何使用 IN
运算符来判断一个值是否包含在一个值列表中。
在使用 SQL 查询的时候,我们可能需要判断一个字段的值是否位于一组值中,这就需要用到 IN
运算符了。
IN
运算符用来检查一个字段或值是否包含在一个集合中,如果值包含在集合中返回 1
,否则返回 0
。
MySQL IN 语法
IN
是一个双目运算符,它需要 2 个操作数。以下是 IN
运算符的语法:
expression IN (value1, value2, ...)
用法说明:
expression
可以是一个字段名、值或其他的表达式(比如函数调用、运算等)。(value1, value2, ...)
是一个值列表,多个值之间使用,
分隔,并使用小括号()
将它们包围起来。value1
是具体的值,比如:1
,2
,'A'
,'B'
等。(value1, value2, ...)
最少可以是 1 个值,比如(1)
,('A')
。
MySQL IN 运算规则
IN
运算符当左侧的操作数的值是右侧操作数集合列表中的其中一个时, IN
运算符返回 1
。否则 返回 0
。
IN
运算符其实是多个 OR
运算符组合的简化版本。比如下面的 IN
语句:
name IN ('Alice', 'Tim', 'Jack')
相当于下面的 OR
语句:
name = 'Alice' OR name = 'Tim' OR name = 'Jack'
IN
运算符的运算规则如下:
-
当左侧和右侧都不是
NULL
时,右侧值列表中包含左侧的值时返回1
,否则返回0
。SELECT 1 IN (1, 2), 3 IN (1, 2), 'A' IN ('A', 'B'), 'C' IN ('A', 'B');
+-------------+-------------+-------------------+-------------------+ | 1 IN (1, 2) | 3 IN (1, 2) | 'A' IN ('A', 'B') | 'C' IN ('A', 'B') | +-------------+-------------+-------------------+-------------------+ | 1 | 0 | 1 | 0 | +-------------+-------------+-------------------+-------------------+
-
当左侧操作数为
NULL
,返回NULL
。SELECT NULL IN (1, 2), NULL IN (1, 2, NULL);
+----------------+----------------------+ | NULL IN (1, 2) | NULL IN (1, 2, NULL) | +----------------+----------------------+ | NULL | NULL | +----------------+----------------------+
-
当右侧值列表含有
NULL
,如果包括左侧的非 NULL 值,返回1
,否则返回NULL
SELECT 1 IN (1, NULL), 2 IN (1, NULL);
+----------------+----------------+ | 1 IN (1, NULL) | 2 IN (1, NULL) | +----------------+----------------+ | 1 | NULL | +----------------+----------------+
MySQL IN 实例
在实际开发中,我们会在 SELECT
、UPDATE
、DELETE
语句中的 WHERE 子句中使用 IN
运算符。在 IN
运算符中,除了与值列表比较,还可能与子查询进行比较。
在以下实例中,我们使用 Sakila 示例数据库中的 actor
表作为演示。
以下查询使用 WHERE
子句查找姓氏为 ALLEN
或 DAVIS
的所有演员。这个语句和我们的 MySQL OR
教程中的实例语句结果完全相同。
SELECT
*
FROM
actor
WHERE
last_name IN ('ALLEN', 'DAVIS');
+----------+------------+-----------+---------------------+
| actor_id | first_name | last_name | last_update |
+----------+------------+-----------+---------------------+
| 118 | CUBA | ALLEN | 2006-02-15 04:34:33 |
| 145 | KIM | ALLEN | 2006-02-15 04:34:33 |
| 194 | MERYL | ALLEN | 2006-02-15 04:34:33 |
| 4 | JENNIFER | DAVIS | 2006-02-15 04:34:33 |
| 101 | SUSAN | DAVIS | 2006-02-15 04:34:33 |
| 110 | SUSAN | DAVIS | 2006-02-15 04:34:33 |
+----------+------------+-----------+---------------------+
结论
本文通过实例介绍了 MySQL 中 IN
运算符的语法和用法。 IN
运算符的用法要点如下:
IN
是一个双目运算符,需要 2 个操作数。IN
运算符左侧操作数是字段名或者值,右侧操作数是值列表或者子查询结果。IN
运算符左侧的操作数的值是右侧操作数集合列表中的其中一个时,返回1
。否则 返回0
。IN
运算符可以看作是多个OR
运算符组合的简化版本。IN
运算符的否定操作是NOT IN
。