sql - 当第二个表中不存在或具有空值时,从 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));
解决方案
我正在尝试获取 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_b
但b3
在null
匹配记录中 - 如果有比赛
推荐阅读
- time - 球拍中的计时功能
- ios - 用户打开另一个应用程序的通知?
- spring - Object.setXXX(Spring Data JPA 实体)抛出 NullPointerException
- node.js - 如何将 laravel 存在通道与 nodejs socket.io 链接
- django - 占位符 Django 登录页面
- r - 使用 quanteda 中的字典从 DFM 中进行子集/选择
- regex - 正则表达式匹配带有十进制数字的段落中的最后一句
- c# - 将带有 MIME 标头的文件保存到文件
- r - 条件求和 R | 如何对行求和并按条件规则
- r - 计算 0.01 到 0.015 之间的日志返回天数