SQL 查询中如何使用 IN 和 NOT IN?(如何使用.查询.SQL...)

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

sql 查询中如何使用 in 和 not in?

在 SQL 查询中,IN 和 NOT IN 用于判断某个字段的值是否在指定的值列表中,是简化多个 OR 条件的有效方式。

使用 IN 操作符

IN 可以让你在一个查询中匹配多个可能的值,等价于多个 OR 条件的组合。

例如,查找城市为北京、上海或广州的用户:

SELECT * FROM users WHERE city IN ('北京', '上海', '广州');

这条语句和下面的写法效果相同:

SELECT * FROM users WHERE city = '北京' OR city = '上海' OR city = '广州';
IN 还支持子查询,比如找出所有订单金额大于 1000 的用户的资料:

SELECT * FROM users WHERE id IN (SELECT user_id FROM orders WHERE amount > 1000);
使用 NOT IN 操作符

NOT IN 是 IN 的反向操作,用于排除指定列表中的值。

Teleporthq Teleporthq

一体化AI网站生成器,能够快速设计和部署静态网站

Teleporthq182 查看详情 Teleporthq 例如,查找城市不是深圳或杭州的用户:

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 的记录,那么这个查询将不会返回任何行,因为任何值与 NULL 比较都会导致结果不确定。

解决方法是显式排除 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?的详细内容,更多请关注知识资源分享宝库其它相关文章!

相关标签: 解决方法 上海 sql NULL select 大家都在看: SQL 分组查询如何实现多级统计? AI运行SQL如何保证数据安全_AI执行SQL时安全措施与方法 SQL 查询报错 “ambiguous column” 怎么解决? SQL 分组查询如何处理空字符串? AI执行SQL类型转换的方法_利用AI处理数据类型转换教程

标签:  如何使用 查询 SQL 

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。