【问题标题】:Join to another table when the join column is null当连接列为空时连接到另一个表
【发布时间】:2020-02-09 05:55:18
【问题描述】:

我有一个从数据库中选择许多东西的 sql,但是我希望这些数据只返回与我拥有的个人表匹配的数据。 我想从我的表 [population] 中加入一列 [vin_code] 但是这里有空值,如果有空值我想从我的表中加入另一列到数据库中的另一个表。

下面我会给出一个示例sql:

Select distinct v.kegal_rntity_id
From vin v
  Inner join ops$dami.population pop
          On v.vin_code = pop.vin_code

那么 pop.vin_code 是否为 null 我想在数据库中名为 zegal_rentity z column z.vis_code 的表上加入 pop.vis_code

类似

join zegal_rentity z
On pop.vis_code = z.vis_code

但我只想在 pop.vin_code 为 null 时这样做

【问题讨论】:

  • 请显示一些示例输入/预期输出。它不需要是真实的数据,只是代表问题。在这里很难看出你想做什么。
  • 在我自己的表中,我有 150 万条记录,其中 140 万条有 Vin 代码,例如 12345678,这些可以与主数据库匹配,以带回客户名称示例 John Smith 但我也想匹配剩余的 100k 但这些只有一个 vis 代码,例如 abcdef 数据库中有另一个可以匹配的表。所以我想先加入表中的 140 万个 vin 代码以获取客户名称,然后在 vis 代码上剩余 100k 以获取名称。我可以简单地通过内部连接获得前 1.4m,但不知道下一步该做什么

标签: oracle join null


【解决方案1】:

由于样本数据不可用,我无法测试解决方案,但尝试使用基于条件的outer join 进行以下查询。

Select distinct v.kegal_rntity_id
From ops$dami.population pop
Left join vin v 
On v.vin_code = pop.vin_code
Left join zegal_rentity z
On (case when pop.vin_code is null and
pop.vis_code = z.vis_code then 1 end = 1);

干杯!!

【讨论】:

  • 非常感谢我已经尝试了上面的 sql 但查询运行了 4 个多小时而没有返回结果
猜你喜欢
  • 1970-01-01
  • 2018-10-05
  • 1970-01-01
  • 1970-01-01
  • 2021-09-11
  • 2017-10-17
  • 1970-01-01
  • 2018-01-13
  • 2023-03-19
相关资源
最近更新 更多