配置单元中的多表联接获取错误-联接中同时遇到左别名和右别名

vvppvyoh  于 2021-07-12  发布在  Spark
关注(0)|答案(1)|浏览(281)

我想加入三张table。以下是表格详情。

我期待以下结果

这里是我的查询和获取错误为“在join'id'中同时遇到左别名和右别名”。这是由于将第3个表与第1个表和第2个表连接在一起(最后一个完整的join语句)。

select coalesce(a.id,b.id,c.id) as id,
ref1,ref2,ref3
from v_cmo_test1 a 
FULL JOIN v_cmo_test2 b on (a.id = b.id)
FULL JOIN v_cmo_test3 c on (c.id in (a.id,b.id))

如果我使用的是下面的查询,id 3在表中重复,这是我不想要的。

select coalesce(a.id,b.id,c.id) as id,
ref1,ref2,ref3
from v_cmo_test1 a 
FULL JOIN v_cmo_test2 b on a.id = b.id
FULL JOIN v_cmo_test3 c on c.id = a.id


有谁能帮我达到预期的效果,真的很感谢你的帮助。
谢谢,巴布

9gm1akwq

9gm1akwq1#

这是一个非常棘手的要求。数据不正确,因为您使用test1作为驱动程序,外部连接无法正常工作。这可能发生在其他表中。所以,我一次加入两张table来实现你想要的。

select coalesce(inner_sq.id,c.id) as id,ref1,ref2,ref3
from 
(select coalesce(a.id,b.id,c.id) as id,ref1,ref2
from v_cmo_test1 a 
FULL JOIN v_cmo_test2 b on a.id = b.id
) inner_sq
FULL JOIN v_cmo_test3 c on c.id = inner_sq.id

内部查询输出-

1,bab,kim
2,xxx,yyy
3,,mmm

当您在上面使用test3完全连接时,您应该得到您的输出。

相关问题