hive中用not in查询正确数据,返回值为空

Posted 清欢渡12138

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hive中用not in查询正确数据,返回值为空相关的知识,希望对你有一定的参考价值。

原因:
Hive中的not in函数有一个隐藏的陷阱,当not in() 中的数值包含NULL,匹不上的数据会返回NULL而不是True。

所以当在where中使用not in子查询进行筛选,一定要记得去除NULL值

1、问题
在工作中遇到下面这样一个事情

select * 
from tablename 
wehre id not in (select id from tablename2)

这个语句看似没有问题,但是你查询符合条件的id,返回值缺为null
经查验资料发现,not in 后面的数据中不能包含null值,不然返回的数据就会是空值

正确写法如下

select * 
from tablename 
wehre id not in (select id from tablename2 where id is null)

以上是关于hive中用not in查询正确数据,返回值为空的主要内容,如果未能解决你的问题,请参考以下文章

使用 NOT IN 子句替代 Hive 查询

SQL语句中 NOT IN 子句的“正确打开方式”

oracle_not exists和not in的用法和区别

sql not in 查询结果为空解决

Oracle 查询某字段值为空的数据

mysql中not in怎么使用