Hive:不在子查询中加入

时间:2015-11-06 14:33:21

标签: join hive subquery

我正在寻找一种方法来从一个表中选择所有不在其他表中退出的值。这需要在两个变量上完成,而不是一个。

select * from tb1 
where tb1.id1 not in (select id1 from tb2) 
and tb1.id2 not in (select id2 from tb2)

我不能使用子查询。它只需要使用连接来完成。

我试过了:

select * from tb1 full join tb2 on
tb1.id1=tb2.id1 and tb1.id2=tb2.id2

这适用于条件中的一个变量,但不是两个。 请提出一些解决方案。

1 个答案:

答案 0 :(得分:0)

由于您希望从tb1获取所有数据,并且在tb2上没有列id1和id2的公共数据,因此您可以在表tb1上使用左外连接。像

这样的东西
SELECT tb1.* FROM tb1 LEFT OUTER JOIN tb2 ON
(tb1.id1=tb2.id1 AND tb1.id2=tb2.id2) 
 WHERE tb2.id1 IS NULL