A表中有列:A1,A2,A3  其中A1,A2为主键
B表中有列:B1,A1,A2,B2,B3  其中B1,A1,A2为主键
A表中数据如下:
A1   A2     A3
01   0101   3
01   0102   1
01   0103   7
..   ...    .
02   0201   2
02   0202   9
02   0203   4
B表中数据如下:
B1  A1   A2     B2
1   01   0101   2
1   01   0102   
1   01   0103   6
我想用左连接显示如下数据:
A1   A2     A3   B2
01   0101   3    2
01   0102   1    
01   0103   7    6但是老是把A表中的数据全显示出来了,难道左连接时不能过滤掉左边不加限制表的部分数据吗(全显示出来了)?怎么办?

解决方案 »

  1.   

    select a.a1,a.a2,a.a3,b.b2 from a,b where a.a1=b.a1 and a.a2=b.a2
      

  2.   

    老是把A表中的数据全显示出来了才注意你问的问题的意思呵呵
    加上表前缀就好了,比如只要A.A1,A.A2
      

  3.   

    select a.a1,a.a2,a.a3,b.b2 
    from a
         left join b on  a.a1=b.a1 and a.a2=b.a2
    where a.A1='01'
      

  4.   

    我要是用xiaoku的语句,我想得到的数据中就少了这条  01   0102   1    (空的)
    我用下面的语句就会把A表中的数据全显示出来,有多余的数据,
    select a.a1,a.a2,a.a3,b.b2 
    from a
         left join b on  a.a1=b.a1 and a.a2=b.a2 and a.A1='01'
      

  5.   

    我想用左连接显示如下数据:
    A1   A2     A3   B2
    01   0101   3    2
    01   0102   1         (第二条记录有空值也要显示出来)
    01   0103   7    6
      

  6.   

    解决了,就用xiaoku的语句,只不过在ON后面WHERE后面加条件,同样条件但结果不同