![](/img/trans.png)
[英]SQL Join one to many extract value from group of same key value where condition is met
[英]SQL Statement join where if one condition is not met, then do the other one
假設我有兩張桌子
NAME_TABLE
ID1 | ID2 | 姓名 |
---|---|---|
一個 | 1 | 傑克 |
乙 | 2 | 克雷格 |
C | 3 | 瑞安 |
D | 4 | 拉里 |
工作表
ID1 | ID2 | 工作 |
---|---|---|
一個 | 2 | 工程師 |
乙 | 1 | 老師 |
乙 | 3 | 分析師 |
F | 4 | 建築師 |
我想進行一個查詢,首先檢查比較每個表的 ID1,然后在它們匹配的地方加入它們。 如果 ID1 沒有匹配,那么我們比較 ID2。
所以決賽桌看起來像這樣。 請注意,如果 ID1 匹配,我們不關心對 ID2 做任何事情。 如果沒有 ID1 匹配,我們只關心 ID2:
最終表
姓名 | 工作 |
---|---|
傑克 | 工程師 |
克雷格 | 老師 |
瑞安 | 分析師 |
拉里 | 建築師 |
您可以使用兩個left join
:
select nt.*,
coalesce(jt1.job, jt2.job) as job
from name_table nt left join
job_table jt1
on nt.id1 = jt1.id1 left join
job_table jt2
on nt.id2 = jt2.id2 and jt1.id1 is null;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.