HIVE哪里不存在不比较NULLS
问题描述:
我想只选择其中一些列值不同的行。我的问题是,如果我使用=,它不会比较具有空值的列,并且如果我用Like替换=,我会得到以下错误,任何建议?两个表具有相同的列HIVE哪里不存在不比较NULLS
不支持的子查询表达式子查询表达式引用父表达式和子查询表达式,并且不是有效的连接条件。 (状态= 42000,代码= 10249)
SELECT *
FROM table1 t
where not exists(
select * from table2 l where t.loco_id=l.loco_id and
t.a=l.a and
t.b=l.b
);
答
null
在技术上是指其unknown
=
不比较unknown
-s;因为它不可能给他们比较......两个unknowns
的对比结果是unknown
:
select assert_true((null = null) is null )
但是:
select assert_true((null = null))
会失败,因为结果是unknown
(空)。
如果你仍然想通过使用null
-s;我建议添加一些3210 -s来摆脱这些unknown
-S。
答
select t.*
from table1 t
left join table2 l
on t.loco_id <=> l.loco_id
and t.a <=> l.a
and t.b <=> l.b
where l.loco_id is null
;
甲< =>乙
返回相同的结果用等号(=)操作者对非空 操作数,但如果两者都为NULL返回TRUE,FALSE,如果他们 中的一个是空值。 (作为一种检测0.9.0版本)。
**(1)**添加包括所需的结果的数据样品**(2)**哪个列可能是NULL?一个? B' loco_id?他们全部?他们中有一些? –