Oracle DB - 不存在匹配数据时的表连接问题

Posted

技术标签:

【中文标题】Oracle DB - 不存在匹配数据时的表连接问题【英文标题】:Oracle DB - Table join issue when no matching data exists 【发布时间】: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. 【参考方案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

【讨论】:

以上是关于Oracle DB - 不存在匹配数据时的表连接问题的主要内容,如果未能解决你的问题,请参考以下文章

oracle存储过程中,调用同义词报表和视图不存在。

plsql连接ORacle数据库时报:因目标主机或对象不存在,连接失败。怎样解决

利用DB Link两步搞定Oracle两个数据库间的表同步

用户的默认或临时表空间不存在 怎么解决

列名或提供的值的数量与更新时的表定义不匹配

DB笔试面试390Oracle的外部表是什么?