【问题标题】:SQL Statement join where if one condition is not met, then do the other oneSQL 语句 join where 如果一个条件不满足,则执行另一个条件
【发布时间】:2021-01-31 03:15:17
【问题描述】:

假设我有两张桌子

NAME_TABLE

ID1 ID2 NAME
A 1 JACK
B 2 CRAIG
C 3 RYAN
D 4 LARRY

工作表

ID1 ID2 JOB
A 2 ENGINEER
B 1 TEACHER
E 3 ANALYST
F 4 ARCHITECT

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

所以决赛桌看起来像这样。请注意,如果 ID1 匹配,我们不关心对 ID2 做任何事情。如果没有 ID1 匹配,我们只关心 ID2:

FINAL_TABLE

NAME JOB
JACK ENGNEER
CRAIG TEACHER
RYAN ANALYST
LARRY ARCHITECT

【问题讨论】:

    标签: sql oracle join


    【解决方案1】:

    你可以使用两个left joins:

    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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多