两张表:
T1
t11    t12
----   ----
1      a1
2      b1
3      c1T2
t21   t22   t32
----  ----  ----
1     aa2   aa3
2     bb2   bb3
3     cc2   cc3
4     dd2   dd3想得到结果:
t11    t12   t21   t22   t32
-----------------
1      a1    1     aa2   aa3
2      b1    2     bb2   bb3
3      c1    3     cc2   cc3
null   null  4     dd2   dd3
请问这样可以实现吗?如何实现?

解决方案 »

  1.   

    select t1.*,t2.* from t1,t2 where t11(+) = t21;
      

  2.   

    楼上的和select * from t1 right join t2 on t1.t11=t2.t21;这个效果是一样的吧?
    但是如果T2表中的3    cc2  cc3 记录改成5    cc2  cc3 呢?
    我是想取出T1的所有记录和T2的所有记录,请问可不可以实现?
      

  3.   

    SQL> select * from t1
      2  full outer join t2
      3  on (t11=t21);       T11 T12                         T21 T22                  T32
    ---------- -------------------- ---------- -------------------- --------
             1 a1                            1 aa2                  aa3
             2 b1                            2 bb2                  bb3
             3 c1                            3 cc2                  cc3
             5 f1
                                             4 dd2                  dd3
      

  4.   

    T1 
    t11    t12 
    ----  ---- 
    1      a1 
    2      b1 
    3      c1 T2 
    t21  t22  t32 
    ----  ----  ---- 
    1    aa2  aa3 
    2    bb2  bb3 
    5    cc2  cc3 
    4    dd2  dd3 这样一来,用这句select t1.*,t2.* from t1,t2 where t11(+) = t21;得到的结果是
    t11    t12  t21  t22  t32                           t11    t12  t21  t22  t32          
    -----------------                         -----------------
    1      a1    1    aa2  aa3                          1      a1    1    aa2  aa3
    2      b1    2    bb2  bb3              而不是        2      b1    2    bb2  bb3
                 5    cc2  cc3                          3      c1    3    cc2  cc3
    null  null   4    dd2  dd3                          null  null   4    dd2  dd3
    也就是说只有当两表中的t11,t21字段中有相同的记录时,才有可能查出结果,如果t11,t21当中没有相同记录时,能否查出来?
      

  5.   

    select t1.*,t2.* from t1,t2 where t11(+) = t21
    union
    select t1.*,t2.* from t1,t2 where t11 = t21(+);
      

  6.   

    4楼正解,LZ想要的就是全连接full join
      

  7.   

    用全外连接 full outer Joinselect t1.*,t2.* from t1 right full outer join t2 on t1.t11=t2.t21