首页 > 解决方案 > 如何在不同的列上连接同一个表

问题描述

我有一个我正在使用的主表,cohort_table其中包含三个不同列中的数字形式的邮政编码,customer_zip, payer_zip, provider_zip。我想将此表与另一个表连接起来,该表city_zip在名为的列中具有 3 位数字形式的数字邮政编码,在名为的列中具有zip35 位数字形式的数字邮政编码zip5,以及每个邮政编码所代表的城市city_name。简而言之,我想加入表 where customer_zip=zip3和 where payer_zip=zip5和 where provider_zip= zip5。当我运行它时,我得到了我正在寻找的结果:

select *
from cohort_table
left join city_zip on zip3 = customer_zip

但是,当我尝试同时进行所有三个连接时,我不断收到关于表不明确的错误。

select *
from cohort_table
left join city_zip on zip3 = customer_zip
left join city_zip on zip5 = payer_zip
left join city_zip on zip5 = provider_zip

标签: sqlapache-sparkhive

解决方案


使用表别名!限定列名!

select *
from cohort_table c left join
     city_zip zc3
     on zc3.zip3 = c.customer_zip left join
     city_zip zc5
     on zc5.zip5 = c.payer_zip left join
     city_zip zp5
     on zp5.zip5 = c.provider_zip;

如果您已阅读我对上一个问题的回答,您就会知道如何做到这一点。这个问题并不完全重复(因此没有关闭),因为您引入了第三种查找可能性。


推荐阅读