首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

NOT IN子句和NULL值

在 SQL 查询中,NOT IN 子句用于过滤出不在指定列表中的行。与 IN 子句相反,NOT IN 子句返回不匹配列表中任何值的行。

例如,假设有一个名为 products 的表,其中包含 product_idproduct_name 列。以下查询将返回 product_id 不在列表 [1, 2, 3] 中的所有行:

代码语言:sql
复制
SELECT * FROM products
WHERE product_id NOT IN (1, 2, 3);

在处理 NULL 值时,NOT IN 子句可能会导致意外的结果。当 NULL 值与任何其他值进行比较时,结果都是 NULL,而不是 TRUEFALSE。因此,在使用 NOT IN 子句时,如果其中一个列表值为 NULL,则整个条件将被视为 NULL,而不是 TRUEFALSE

例如,以下查询将返回 product_id 不等于 1NULL 的所有行:

代码语言:sql
复制
SELECT * FROM products
WHERE product_id NOT IN (1, NULL);

为了避免这种情况,可以使用 NOT IN 子句的替代方法,即使用 NOT EXISTS 子句。以下查询将返回与上面的示例相同的结果,但可以更好地处理 NULL 值:

代码语言:sql
复制
SELECT * FROM products
WHERE NOT EXISTS (
  SELECT 1 FROM (VALUES (1), (NULL)) AS x(value)
  WHERE product_id = x.value
);

总之,NOT IN 子句是一种过滤数据的有效方法,但在处理 NULL 值时需要注意。使用 NOT EXISTS 子句可以避免这些问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

6分8秒

MySQL教程-15-条件查询is null和is not null

13分37秒

045_业务数据采集-DataX的HdfsWriter的Null值存储问题

3分52秒

20_尚硅谷_大数据Spring_依赖注入_null值.avi

5分7秒

10.尚硅谷_JS基础_Null和Undefined

4分6秒

12_尚硅谷_Vue3-基础类型之undefined和null

6分10秒

尚硅谷_Python基础_26_布尔值和空值.avi

1分43秒

JavaSE进阶-135-通过常量获取最大值和最小值

4分5秒

python开发视频课程5.6如何求一个序列的最大值和最小值

4分5秒

python开发视频课程5.6如何求一个序列的最大值和最小值

16分33秒

48.尚硅谷_JS基础_属性名和属性值

6分7秒

045.go的接口赋值+值方法和指针方法

5分25秒

046.go的接口赋值+嵌套+值方法和指针方法

领券