如何在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中这样做
答案 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);