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 实例
以sakila实例数据库为例
以下查询使用 WHERE 子句查找姓氏为 刘
或 周
的所有演员。这个语句和我们的 MySQL OR 教程中的实例语句结果完全相同。
SELECT
*
FROM
actor
WHERE
last_name IN ('刘', '周');
+----------+------------+-----------+---------------------+
| actor_id | first_name | last_name | last_update |
+----------+------------+-----------+---------------------+
| 2 | 德华 | 刘 | 2024-05-23 10:38:39 |
| 5 | 青云 | 刘 | 2024-05-23 10:54:57 |
| 18 | 亦菲 | 刘 | 2024-05-23 11:13:27 |
| 1 | 星驰 | 周 | 2024-05-23 10:38:29 |
| 16 | 润发 | 周 | 2024-05-23 10:58:35 |
+----------+------------+-----------+---------------------+
5 rows in set (0.01 sec)
结论
本文通过实例介绍了 MySQL 中 IN 运算符的语法和用法。 IN 运算符的用法要点如下:
- IN 是一个双目运算符,需要
2 个操作数
。 - IN 运算符左侧操作数是
字段名或者值
,右侧操作数是值列表或者子查询结果
。 - IN 运算符左侧的操作数的值是
右侧操作数集合列表中的其中一个时
,返回 1。否则 返回 0。 - IN 运算符可以看作是
多个 OR 运算符
组合的简化版本。 - IN 运算符的否定操作是
NOT IN
。