SQL Statement join where 如果一个条件不满足,则执行另一个

时间:2021-01-31 03:15:17

标签: sql oracle join

假设我有两张桌子

NAME_TABLE

<头>
ID1 ID2 NAME
A 1 杰克
B 2 CRAIG
C 3 RYAN
D 4 拉里

JOB_TABLE

<头>
ID1 ID2 工作
A 2 工程师
B 1 教师
E 3 分析员
F 4 建筑师

我想做一个查询,首先检查比较每个表的 ID1,然后在匹配的地方加入它们。如果 ID1 中没有匹配项,则比较 ID2。

所以决赛桌应该是这样的。请注意,如果 ID1 匹配,我们不关心对 ID2 执行任何操作。如果没有 ID1 匹配,我们只关心 ID2:

FINAL_TABLE

<头>
NAME 工作
杰克 工程师
CRAIG 教师
RYAN 分析员
拉里 建筑师

1 个答案:

答案 0 :(得分:1)

您可以使用两个 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;