sql join,左连接。如果有正确的表格标准,则不显示记录

时间:2011-10-05 04:03:29

标签: sql join left-join

a字段:

id_a

b字段:

id_b
id_b2
filed_b
filed_b2

c字段:

id_c
filed_c

a数据:

id_a
----
1 
2 

b数据:

id_b  id_b2  filed_b
----  -----  -------
1     1      1  
2     2      100 

c数据:

id_c  filed_c
----  ---------
1     adfa11111
2     dfdf22222

加入

a join b on id_a=id_b
b join c on id_b2=id_c

目标是获取所有表a数据和关联的filed_c数据。 标准是:if filed_b=100, list filed_c. otherwise leave filed_c null.

问题:使用左连接,如果右表上没有标准,那很好。但是一旦右表上有标准,右表中不存在的记录就不会出现。

1 个答案:

答案 0 :(得分:2)

使用左外连接获取where条件的技巧是将条件放在join子句中。如果您在where子句中检查了b.filed_b,则排除值为null的行,这是表b中没有匹配时的行。

你的情况就是这样。

select *
from a
  left outer join b
    on a.id_a = b.id_b and
       b.filed_b = 100
  left outer join c
    on b.id_b2 = c.id_c