【问题标题】:Oracle DB - Table join issue when no matching data existsOracle DB - 不存在匹配数据时的表连接问题
【发布时间】:2020-12-11 11:40:01
【问题描述】:

我有 Oracle DB 和两个表如下

Vaccine_Trns

ID  | Vac_Code | Patient | TxnDate
--------------------------------------
V01 | SER520   | test1   | 2020-12-07
V02 | SER519   | test2   | 2020-12-07
V03 | SER520   | test3   | 2020-12-07
V04 | SER523   | test4   | 2020-12-07
V05 | N/A      | test5   | 2020-12-07

Vaccine_Msr

ID     | Desc |
------------------
SER519 | VacDesc01
SER520 | VacDesc02
SER523 | VacDesc03

我知道,当我通过 Vaccine_Trns 中的Vac_CodeVaccine_Msr 中的ID 加入这两个表时,我在 Vaccine_Trns 中丢失了 V05 行strong>,但是下面有没有办法以这种方式获取结果?

没有 V05,它是一个简单的连接,但我不知道在这里做什么。

非常感谢您。

预期结果>>

Patient | Desc      |  TxnDate
--------------------------------
test1   | VacDesc02 | 2020-12-07
test2   | VacDesc01 | 2020-12-07
test3   | VacDesc02 | 2020-12-07
test4   | VacDesc03 | 2020-12-07
test5   | null      | 2020-12-07

【问题讨论】:

  • 提示:LEFT JOIN.

标签: sql oracle join


【解决方案1】:

使用left join:

select vt.patient, vm.desc, vt.txndate
from Vaccine_Trns vt left join
     Vaccine_Msr vm
     on vt.Vac_Code = vm.id

【讨论】:

    【解决方案2】:

    您可以使用LEFT JOIN

    select t.Patient, m.desc, t.txndate
      from Vaccine_Trns t left join Vaccine_msr m
        on t.Vac_Code  = msr.id
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-19
      • 1970-01-01
      相关资源
      最近更新 更多