Hive 中的多个表连接出现错误 - 连接中遇到左右别名
Posted
技术标签:
【中文标题】Hive 中的多个表连接出现错误 - 连接中遇到左右别名【英文标题】:Mulitple tables join in Hive getting error - Both left and right aliases encountered in join 【发布时间】:2021-03-12 19:02:29 【问题描述】:我正在尝试加入 3 张桌子。以下是表格详情。
我期待以下结果
这是我的查询并收到错误为“在连接'id'中遇到左右别名”。 这是由于将第 3 个表与第 1 个和第 2 个表连接(最后一个完整的连接语句)。
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
任何人都可以帮助我如何达到预期的结果,非常感谢您的帮助。
谢谢,巴布
【问题讨论】:
【参考方案1】:这是一个非常棘手的要求。数据不正确,因为您使用 test1 作为驱动程序,外部连接不能正常工作。这可能发生在其他表中。所以,我一次加入两个表来实现你想要的。
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
Inner_sq 查询输出 -
1,bab,kim
2,xxx,yyy
3,,mmm
当你在上面用 test3 完全加入时,你应该得到你的输出。
【讨论】:
以上是关于Hive 中的多个表连接出现错误 - 连接中遇到左右别名的主要内容,如果未能解决你的问题,请参考以下文章