【问题标题】:sql join, left join . records not shown if there's criteria for right tablesql 连接,左连接。如果有正确表的标准,则不显示记录
【发布时间】:2011-12-01 04:17:33
【问题描述】:

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.

问题:使用了左连接,如果右表没有条件就可以了。但是一旦右表有条件,右表不存在的记录就不会显示出来。

【问题讨论】:

    标签: sql join left-join


    【解决方案1】:

    获得使用左外连接的 where 条件的技巧是将条件放在连接子句中。如果您在 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-23
      相关资源
      最近更新 更多