sql - 如何在不同的列上连接同一个表
问题描述
我有一个我正在使用的主表,cohort_table
其中包含三个不同列中的数字形式的邮政编码,customer_zip
, payer_zip
, provider_zip
。我想将此表与另一个表连接起来,该表city_zip
在名为的列中具有 3 位数字形式的数字邮政编码,在名为的列中具有zip3
5 位数字形式的数字邮政编码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
解决方案
使用表别名!限定列名!
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;
如果您已阅读我对上一个问题的回答,您就会知道如何做到这一点。这个问题并不完全重复(因此没有关闭),因为您引入了第三种查找可能性。
推荐阅读
- javascript - Selenium webdriver 中未捕获整页屏幕截图,因为正文返回高度为 0
- javascript - 异步客户端 XSLT
- c# - Mongodb:创建一个简单的like系统
- html - 纯 CSS 手风琴
- python - Python - 解构器不删除对象实例
- reactjs - 在 Alwaysdata 上使用 Apache 反应应用程序生产
- python-2.7 - 如何在python中向两个不同的cmd窗口发送不同的命令
- animation - 如何在 JavaFx 中的时间线每次迭代后提高动画速度
- c# - indexer 的属性不能分配给 ,它是只读的。无法保存设置
- mysql - SELECT 查询显示在进程列表中但未完成/执行