2017-08-30 70 views
-1

我想只選擇其中一些列值不同的行。我的問題是,如果我使用=,它不會比較具有空值的列,並且如果我用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 
); 
+0

**(1)**添加包括所需的結果的數據樣品**(2)**哪個列可能是NULL?一個? B' loco_id?他們全部?他們中有一些? –

回答

-1

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。