IN和NOT IN用于匹配或排除字段值在列表中的记录,等价于多个OR条件组合;IN可结合子查询使用,而NOT IN需注意子查询结果含NULL时会导致无返回结果,应通过IS NOT NULL过滤NULL值以避免此问题。

在 SQL 查询中,IN 和 NOT IN 用于判断某个字段的值是否在指定的值列表中,是简化多个 OR 条件的有效方式。
IN 可以让你在一个查询中匹配多个可能的值,等价于多个 OR 条件的组合。
例如,查找城市为北京、上海或广州的用户:SELECT * FROM users WHERE city IN ('北京', '上海', '广州');这条语句和下面的写法效果相同:
SELECT * FROM users WHERE city = '北京' OR city = '上海' OR city = '广州';
SELECT * FROM users WHERE id IN (SELECT user_id FROM orders WHERE amount > 1000);
NOT IN 是 IN 的反向操作,用于排除指定列表中的值。
例如,查找城市不是深圳或杭州的用户:SELECT * FROM users WHERE city NOT IN ('深圳', '杭州');SELECT * FROM users WHERE id NOT IN (SELECT user_id FROM orders WHERE status = '已取消');
使用 NOT IN 时要特别注意 NULL 值 的影响。如果子查询返回的结果中包含 NULL,整个 NOT IN 条件会返回 UNKNOWN,导致没有结果返回。
例如:SELECT * FROM users WHERE id NOT IN (SELECT user_id FROM orders);
orders
user_id
解决方法是显式排除 NULL 值:
SELECT * FROM users WHERE id NOT IN (SELECT user_id FROM orders WHERE user_id IS NOT NULL);
基本上就这些。IN 和 NOT IN 能让条件查询更简洁,但用 NOT IN 时务必检查子查询是否可能返回 NULL,避免意外无结果的情况。
以上就是SQL 查询中如何使用 IN 和 NOT IN?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号