摘要:在本教程中,您将学习如何使用 MySQL NOT IN
运算符来检查某个值是否不在值列表中。
MySQL NOT IN 运算符简介
NOT
运算符对IN
运算符求反:
value NOT IN (value1, value2, value2)
Code language: SQL (Structured Query Language) (sql)
如果该值不等于列表中的任何值,则NOT IN
运算符返回 1。否则,返回 0。
以下示例使用NOT IN
运算符检查数字 1 NOT IN
列表 (1,2,3) 中:
SELECT 1 NOT IN (1,2,3);
Code language: SQL (Structured Query Language) (sql)
输出:
+------------------+
| 1 NOT IN (1,2,3) |
+------------------+
| 0 |
+------------------+
1 row in set (0.00 sec)
Code language: plaintext (plaintext)
它返回 0 (false),因为 1 NOT IN
是false
。
以下示例使用NOT IN
运算符检查 0 是否NOT IN
列表 (1,2,3) 中:
SELECT 0 NOT IN (1,2,3);
Code language: SQL (Structured Query Language) (sql)
输出:
+------------------+
| 0 NOT IN (1,2,3) |
+------------------+
| 1 |
+------------------+
1 row in set (0.00 sec)
Code language: plaintext (plaintext)
如果 IN 运算符左侧的值为NULL ,则NOT IN
IN
运算符将返回 NULL。例如:
SELECT NULL NOT IN (1,2,3);
Code language: SQL (Structured Query Language) (sql)
输出:
+---------------------+
| NULL NOT IN (1,2,3) |
+---------------------+
| NULL |
+---------------------+
1 row in set (0.00 sec)
Code language: plaintext (plaintext)
从技术上讲, NOT IN
运算符等效于以下内容:
NOT (value = value1 OR value = value2 OR value = valu3)
Code language: SQL (Structured Query Language) (sql)
或者:
value <> value1 AND value <> value2 AND value <> value3
Code language: SQL (Structured Query Language) (sql)
MySQL NOT IN 运算符示例
我们将使用示例数据库中的offices
表来说明NOT IN
运算符:

以下示例使用NOT IN
运算符查找不在France
和USA
的办事处:
SELECT
officeCode,
city,
phone
FROM
offices
WHERE
country NOT IN ('USA' , 'France')
ORDER BY
city;
Code language: SQL (Structured Query Language) (sql)
输出:
+------------+--------+------------------+
| officeCode | city | phone |
+------------+--------+------------------+
| 7 | London | +44 20 7877 2041 |
| 6 | Sydney | +61 2 9264 2451 |
| 5 | Tokyo | +81 33 224 5000 |
+------------+--------+------------------+
3 rows in set (0.02 sec)
Code language: plaintext (plaintext)
概括
- 使用 MySQL
NOT IN
检查某个值是否与列表中的任何值都不匹配。
本教程有帮助吗?