从配置单元联接查询中选择非重复记录

时间:2016-07-15 00:38:35

标签: sql hadoop join hive hiveql

我有以下Hive查询:

select *
from A
left outer join B
on A.ID = B.ID
where B.ID IS NULL 

结果会产生重复数据,但我只需要非重复记录。

经过一番研究,我尝试了以下查询:

select *
from (
    select *
    from A
    left outer join on B
    where A.ID = B.ID AND B.ID IS NULL ) join_result
group by jojn_result.ID

它显示了一个模糊的列引用ID错误。

我没有表A的列名。

请帮我确定解决方案。

谢谢。

2 个答案:

答案 0 :(得分:1)

嗯。嗯。 。 。 Select A.* from A left outer join B on A.ID = B.ID where B.ID IS NULL;

怎么样?
B

我删除了protected列,因为它们不需要。

答案 1 :(得分:0)

您的一个连接列可能具有NULL值。只要任何联接键值中有NULL,它就会跳过该列。使用NULLNVL加入时,尝试用一些默认值替换COALESCE。我在寻找相同的答案,并在这里看到了您的帖子。但是没有解决方案。但是,因为我找到了解决方案,所以我只想在这里发布内容,以便某人可以受益。

select *
from A
left outer join B
on coalesce(A.ID,000) = coalesce(B.ID,000)
where B.ID IS NULL