背景:实际开发中需要用到全关联的用法,之前没遇到过,现在记录一下。需求是找到两张表的并集。
全关联的解释如下;
下面建两张表进行测试
test_a表的数据如下
test_b表的数据如下;
写第一个full join 的SQL进行查询测试
select * from pdata_dynamic.test_a a
full joinpdata_dynamic.test_b b
on a.id=b.id;
查询结果显示如下;
把两个表的结果拼在一行了,匹配不上的都用NULL值进行填充了,显然不是我要的结果
优化好的full join的SQL写法如下
select
case whena.id is null then b.id
elsea.id
endid ,
case whena.name is null then b.name
elsea.name
endname,
case whena.age is null then b.age
elsea.age
endage,
case whena.hight is null then b.hight
elsea.hight
endhight
frompdata_dynamic.test_a a
full joinpdata_dynamic.test_b b
on a.id=b.id;
查询完显示如下,nice,😄