背景:实际开发中需要用到全关联的用法,之前没遇到过,现在记录一下。需求是找到两张表的并集。
全关联的解释如下;
下面建两张表进行测试
test_a表的数据如下
test_b表的数据如下;
写第一个full join 的SQL进行查询测试
select * from
pdata_dynamic.test_a a
full join
pdata_dynamic.test_b b
on a.id=b.id;
查询结果显示如下;
把两个表的结果拼在一行了,匹配不上的都用NULL值进行填充了,显然不是我要的结果
优化好的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,😄