问题不是很好描述,我尽量说清楚吧。我有一张表tbl_a,其中有字段a,b,c,其中a是主键,b,c字段可为空。另外有一张表记做tbl_b,其中有字段b,d,e,b为主键。两张表以字段b做联合查询:select a.*,b.* from tbl_a a, tbl_b b where a.b = b.b;但是这个查询结果仅仅是a表在b字段不为空的情况下得到的结果集;
我现在想得到的结果集里也包含b字段为空的情况,而b表的所有字段在b为空的情况下也全部为空,即结果集里也包含类似如下的记录:
a.a,'',a.c,'','','';很菜,请不吝赐教这个SQL该怎么写,多谢了。

解决方案 »

  1.   

    select a.*,b.* from tbl_a a, tbl_b b where a.b = b.b(+); 
      

  2.   

    不过你a.b为空的话,会有问题噢
    你可以用赋个不可能在b.b里出现的值来比较,为NULL的字段比较会有问题的
    select a.*,b.* from tbl_a a, tbl_b b where nvl(a.b,不会出现的值) = b.b(+); 
      

  3.   

    b表的所有字段在b为空的情况下也全部为空  b表里的b字段不是主键么,怎么还能为空???
      

  4.   

    select a.*,b.* from tbl_a a, tbl_b b where a.b = b.b or b.b is null or a.b is null; 
      

  5.   

    左外连接吧
     
    select a.*,b.* from tbl_a a left join tbl_b b on a.b = b.b; 
      

  6.   

    就是左外连接
    select a.*,b.* from tbl_a a left join tbl_b b on a.b = b.b;