呼伦贝尔-钢蛋儿

呼伦贝尔-钢蛋儿

背景:实际开发中需要用到全关联的用法,之前没遇到过,现在记录一下。需求是找到两张表的并集。

全关联的解释如下;

hive表的全关联full join用法-LMLPHP

下面建两张表进行测试

test_a表的数据如下
hive表的全关联full join用法-LMLPHP
test_b表的数据如下;
hive表的全关联full join用法-LMLPHP

写第一个full join 的SQL进行查询测试

select * from 
    pdata_dynamic.test_a a
full join
    pdata_dynamic.test_b b
on a.id=b.id;

查询结果显示如下;
把两个表的结果拼在一行了,匹配不上的都用NULL值进行填充了,显然不是我要的结果
hive表的全关联full join用法-LMLPHP

优化好的full join的SQL写法如下

select
case when
        a.id is null then b.id
else
        a.id
end
        id ,
case when
        a.name is null then b.name
else
        a.name
end
        name,
case when
        a.age is null then b.age
else
        a.age
end
        age,
case when
        a.hight is null then b.hight
else
        a.hight
end
        hight
from
        pdata_dynamic.test_a a
full join
        pdata_dynamic.test_b b
on a.id=b.id;

查询完显示如下,nice,😄
hive表的全关联full join用法-LMLPHP

08-23 08:17