离开加入是解决方案吗?

时间:2010-07-22 16:21:33

标签: mysql

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中没有,但我仍然希望得到空值...如何实现这一点?

1 个答案:

答案 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