Table1
F1 F2 F3 F4
ab1 bc1 de1 5
ab2 bc2 de2 6
ab3 bc3 de3 0
Table2
F21 F22 F23
5 five d
6 six e
Table3
f31
ab1
ab2
ab3
select a.f1 a.f2 b.f22 from Table1 as a Table2 as b Table3 as c
where a.f1 = c.f31 and a.f4 = b.f21
我正在寻找结果
ab1 bc1五
ab2 bc2 sex
ab3 bc3“”
我不知道怎么问这个。但我的问题是,如果a.f4 = b.f21没有匹配,这意味着
0表3中没有,但我仍然希望得到空值...如何实现这一点?
答案 0 :(得分:1)
如评论中所述,您应该使用LEFT JOIN。这确实需要重写您的查询。
LEFT OUTER JOIN - 基于两者 join子句中指定的表, 所有数据都从左侧返回 表。在右边的桌子上, 另外还返回匹配数据 到存在记录的NULL值 在左表中,但不在 右表。另一个要保留的项目 心灵是左,右外 JOIN逻辑彼此相反。 所以你可以改变顺序 特定连接中的表 声明或从左边更改JOIN 向右,反之亦然 相同的结果。
SELECT a.f1 a.f2 b.f22
FROM Table1 as a
LEFT OUTER JOIN Table2 as b ON a.f4 = b.f21
LEFT OUTER JOIN Table3 as c ON c.f31 = a.f1