表1
a         b       c
c01      b02     231
c02      b03     342
c03      b03     321表2
a         b       d
c01      b02     0.33
c03      b03    0.44如何得到结果集x        y        z      p
c01      b02     231    0.33
c02      b03     342    null
c03      b03     321    0.44也就是表1字段 a,b 在表2中有数据,取表2 d字段,否则取空各位大大,帮帮忙,新人想的头晕

解决方案 »

  1.   

    select a.a as x,a.b as y,c,d from 表1 as a left join 表2 as b on(a.a=b.a and a.b=b.b)
      

  2.   

    CREATE TABLE #A
    (
    a VARCHAR(100),
    b VARCHAR(100),
    c VARCHAR(100)
    )
    INSERT #A
    select 'c01', 'b02', '231' union all
    select 'c02', 'b03', '342' union all
    select 'c03', 'b03', '321'
    CREATE TABLE #B
    (
    a VARCHAR(100),
    b VARCHAR(100),
    d DECIMAL(10, 2)
    )
    INSERT #B
    SELECT 'c01', 'b02', 0.33 UNION ALL
    SELECT 'c03', 'b03', 0.44
    --SQL
    --#1
    SELECT x=a.a, y=a.b, z=a.c, p=b.d FROM #A a LEFT JOIN #B b ON a.a = b.a AND a.b = b.b
    --#2
    SELECT x=a.a, y=a.b, z=a.c, p=b.d FROM #A a 
    OUTER APPLY
    (SELECT d FROM #B WHERE a = a.a AND b = a.b) b
    --#3
    SELECT x=a.a, y=a.b, z=a.c, 
    p = (SELECT TOP(1) d FROM #B WHERE a = a.a AND b = a.b)
    FROM #A a
      

  3.   

    做链接可以自动对于未匹配的列添加null
    select 
      a.a as x,
      a.b as y,
      c as z,
      d as p
    from 表1 a 
    left join 表2 b 
    on a.a=b.a and a.b=b.b
      

  4.   


    select a.a a.b a.c,b.d 
    from 表1 a left join 表2 b on a.a=b.a and a.b = b.b
      

  5.   

    [size=12px]select 表1.a as x,表1.b as y,表1.c as z,表2.d as p from 表1 left join 表2 
    on 表1.a=表2.a and 表1.b=表2.b
    [/size]
      

  6.   

    select  
      a.a as x,
      a.b as y,
      c as z,
      d as p
    from 表1 a  
    left join 表2 b  
    on a.a=b.a and a.b=b.b
      

  7.   

    select b.*,A.c from 表1 a left join 表2 b where A.a = b.a and b.b = A.b
      

  8.   


    select t1.*,t2.d from t1 left join t2 on t1.a=t2.a and t1.b=t2.b
      

  9.   

    select a,b,c,d from 表1,表2 where 表1.a=表2.a and 表1.b=表2.b;
      

  10.   


    left join
    inner join 
    right join
      

  11.   

    left join 左连接,即可满足你的要求
      

  12.   

    CREATE TABLE A
    (
        a VARCHAR(100),
        b VARCHAR(100),
        c VARCHAR(100)
    )
    INSERT A
    select 'c01', 'b02', '231' union all
    select 'c02', 'b03', '342' union all
    select 'c03', 'b03', '321'
    CREATE TABLE B
    (
        a VARCHAR(100),
        b VARCHAR(100),
        d DECIMAL(10, 2)
    )
    INSERT B
    SELECT 'c01', 'b02', 0.33 UNION ALL
    SELECT 'c03', 'b03', 0.44SELECT a.a AS x,a.b AS y ,a.c AS z ,b.d
    FROM a LEFT JOIN b ON a.a=b.a AND a.b=b.b