首页 > 解决方案 > 当第二个表中不存在或具有空值时,从 2 个表中获取数据

问题描述

我正在尝试从 2 个表中获取数据 - table_a 和 table_b。table_a 的列 - a1,a2,a3 table_b 的列 - b1, b2, b3

现在外键映射是 a1 和 b2。

table_a 中的所有值可能都不存在于 table_b 中。并且 table_b 中的值有时可能会将 b3 列中的值设为空。

我正在尝试获取 table_a 中而不是 table_b 中存在的所有数据以及两个表中都存在的值,但是 table_b 中 b3 列的值是 null 你能帮我做一个 SQL 查询吗相同?

我目前正在使用以下 -

select * 
from table_a left join 
     table_b 
     on (a1 = b2 and (b3 is null or b1 is null));

标签: sqlsql-serverdatabaseleft-join

解决方案


我正在尝试获取 table_a 中而不是 table_b 中存在的所有数据以及两个表中都存在的值,但是 table_b 中列 b3 的值是 null

考虑:

select * 
from table_a a
left join table_b b on b.b2 = a.a1
where b.b3 is null

理由:left join连同were条件b.b3 is null涵盖以下情况

  • 没有匹配项table_b(然后b.b3结束null
  • 有匹配table_bb3null匹配记录中
  • 如果有比赛

推荐阅读