簡體   English   中英

SQL 語句 join where 如果一個條件不滿足,那么做另一個

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM