Hive QL Except子句

时间:2012-06-04 22:03:52

标签: hive

如何在Hive QL中执行EXCEPT子句(如SQL)

我有2个表,每个表都是一列唯一的ID。

我想找到仅在表1中但不在表2中的ID列表

表1

apple
orange
pear

表2

apple
orange

在SQL中你可以做一个EXCEPT子句(http://en.wikipedia.org/wiki/Set_operations_%28SQL%29),但你不能在Hive QL中这样做

2 个答案:

答案 0 :(得分:24)

我认为没有任何内置方法可以做到这一点,但LEFT OUTER JOIN应该可以解决这个问题。

这将从table1中选择 not table2中的所有ID:

SELECT t1.id FROM table1 t1 LEFT OUTER JOIN table2 t2 ON (t1.id=t2.id) WHERE t2.id IS NULL;

答案 1 :(得分:1)

我们可以在Hive中使用 NOT EXISTS 子句作为 MINUS 等效项。

SELECT t1.id FROM t1 WHERE NOT EXISTS (SELECT 1 from t2 WHERE t2.id = t1.id);