表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.
问题:使用左连接,如果右表上没有标准,那很好。但是一旦右表上有标准,右表中不存在的记录就不会出现。
答案 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