【问题标题】:Hive combining full outer join and not in?Hive 结合了完整的外部联接而不是内部联接?
【发布时间】:2019-03-29 20:15:50
【问题描述】:

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

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 都不应该是我第一次查询的最终结果的一部分。

【问题讨论】:

  • 黑名单表中的uid1和uid2是分开的列吗?
  • 不,同一列的值

标签: hive hiveql


【解决方案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

【讨论】:

    猜你喜欢
    • 2013-12-17
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    相关资源
    最近更新 更多