sql连接,左连接。如果右表有条件,则不显示记录
表a
字段:
id_a
表b
字段:
id_b
id_b2
filed_b
filed_b2
表c
字段:
id_c
filed_c
表a
数据:
id_a
----
1
2
表b< /code> data:
id_b id_b2 filed_b
---- ----- -------
1 1 1
2 2 100
table c
data:
id_c filed_c
---- ---------
1 adfa11111
2 dfdf22222
join
a join b on id_a=id_b
b join c on id_b2=id_c
目标是获取所有表 a
数据以及关联的 filed_c
数据。 标准是:如果filed_b=100,则列出filed_c。
问题:使用左连接,如果右表没有条件,就可以。但一旦右表有条件,右表中不存在的记录将不会显示。
Table a
fields:
id_a
Table b
fields:
id_b
id_b2
filed_b
filed_b2
Table c
fields:
id_c
filed_c
table a
data:
id_a
----
1
2
table b
data:
id_b id_b2 filed_b
---- ----- -------
1 1 1
2 2 100
table c
data:
id_c filed_c
---- ---------
1 adfa11111
2 dfdf22222
join
a join b on id_a=id_b
b join c on id_b2=id_c
The goal is to get all table a
data and associated filed_c
data.
Criterion is: if filed_b=100, list filed_c. otherwise leave filed_c null.
Problem: used left join, if no criteria on the right table, it's fine. But once there's a criteria on right table, the records not exist in right table won't show up.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
获得与左外连接一起使用的 where 条件的技巧是将条件放入连接子句中。如果您在 where 子句中检查
b.filed_b
,则会排除值为null
的行,当表b.
你的情况是这样的。
The trick to get a where condition to work with a left outer join is to put the criteria in the join clause. If you checked against
b.filed_b
in the where clause you exclude the rows where the values isnull
which it is when there is no match in tableb
.Something like this in your case.