以下是数据集
Table1
col1,col2
key1,k1
key2,k2
key3,k3
Table2
col1,col3
key1,k11
key2,k22
key4,k44
Table3
col1,col4
key1,k111
key2,k222
key5,k555
我需要根据col1加入3个表。以下是我的查询
从中选择a.col1,a.col2,b.col3,c.col4 table1一个完整的外连接表2 b full outer join table3 c;
预期输出如下所示
预期产出:
col1,col2,col3,col4
key1,k1,k11,k111
key2,k2,k22,k222
key3,k3, ,
key4, ,k44,
key5, , ,k555
答案 0 :(得分:3)
coalesce
他们在一起(合并给你第一个非空
值)。concat
结合使用:把所有这些放在一起:
select
coalesce(t1.col1,t2.col1,t3.col1) as col1,
concat(coalesce(t1.col2,' '),',',coalesce(t2.col2,' '),',',coalesce(t3.col2,' '))
from
table1 t1
full join table2 t2
on t1.col1 = t2.col1
full join table3 t3
on t1.col1 = t3.col1
答案 1 :(得分:1)
由于您正在进行完全外部联接,因此最好为列COALESCE
执行col1
类似的东西:
select
COALESCE(a.col1, b.col1, c.col1) as col1,
a.col2,
b.col3,
c.col4
from
table1 a
full outer join table2 b
on t1.col1 = t2.col1
full outer join table3 c
on t1.col1 = t3.col1;
我们还需要连接条件以避免结果集中的笛卡尔积。