蜂巢结合了完全外部联接而不是外部联接?

时间:2019-03-29 20:15:51

标签: hive hiveql

我有一个类似这样的配置单元查询

SELECT 
    a.uid, 
    a.order_id
FROM table_a a
FULL OUTER JOIN 
(
    SELECT 
        uid, 
        order_id
    FROM table_b
) b
ON (a.uid = b.uid AND a.order_id = b.order_id)

此查询产生一组uid和order_id。

现在,我有一个black_listed表,其中包含一组uid。我希望这组列入黑名单的uid不会成为最终结果的一部分。

有没有办法将这个remove-blacklisted-uids子查询添加到上述查询中(在单个查询中执行此操作)

因此,如果我有一个名为black_listuid1uid2的表,则这两个uid都不应该是我第一次查询的最终结果的一部分。

1 个答案:

答案 0 :(得分:1)

这可以通过left join完成。

SELECT 
    a.uid, 
    a.order_id
FROM table_a a
FULL OUTER JOIN 
(
    SELECT 
        uid, 
        order_id
    FROM table_b
) b
ON (a.uid = b.uid AND a.order_id = b.order_id)
LEFT JOIN black_listed bl on bl.id = a.uid 
WHERE bl.id IS NULL