表1:列A,B,C
表2:列A,B,D
需要连接成表3:列A,B,C,D
表3要包含表1和表2的所有记录该怎么做?

解决方案 »

  1.   

    select a.*,b.d
    from 表1 a full join 表2 b
    on a.a=b.a
    and a.b=b.b
    可能不合你要求,因为你没说要求
      

  2.   

    应该不会的,用的full join
      

  3.   

    表3需要包含且仅能包含表1和表2的所有记录,不能多出多余的记录
    因为不太会用join,事实上是还不能理解join,所以今天想了一天都没作对。
      

  4.   

    select a.*,b.d from 表1 a join 表2 b on a.a=b.a 
    union
    select a.*,b.d from 表2 a join 表1 b on b.a=a.a
      

  5.   

    你没有提供连接的条件,所以只能这样 :)~ 只需要调整on 条件即可
    select a.*,b.d from 表1 a join 表2 b on a.a=b.a 
    union
    select b.a,b.b,a.c,b.d from 表1 a join 表2 b on a.a=b.a
      

  6.   

    假设1,2表名为M,Nselect M.a,M.b,M.c,N.d from M,N where M.a=N.a and M.b=N.b  --获取两表关联的纪录
    union
    select M.a M.b,M.c,null as d from M where M.a
      

  7.   

    mysql数据库上是这样的select M.a,M.b,M.c,N.d from M left join N on M.a=N.a and M.b=N.b
    union
    select N.a,N.b,M.c,N.d from M right join N on M.a=N.a and M.b=N.b
    ===================================================================mysql 似乎不支持嵌套查询,郁闷
      

  8.   

    Yang_(扬帆破浪) 写的正确!
      

  9.   

    select 表1.* ,  表2.D
    from 表1 left outer join 
     表2 on  表1.A = 表2.A
    union
    select 表1.* ,  表2.D
    from 表2 left outer join 
     表1 on  表1.A = 表2.A
      

  10.   

    如果要全 必然会有一些值是NULL
      

  11.   

    null值没有关系,主要是要全
    Yang_(扬帆破浪)写的不符合我的要求
    dream2013(从来不发百分以下穷贴的沉思者) 写的可以用。
    zjdyzwx(十一月猪)写的没有验证,应该也是可以的吧。
    谢谢各位。
    结贴。