表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 a.b a.c,b.d from 表1 a left join 表B b where a.a=b.a
      

  2.   

    晕,错了
    select a.a a.b a.c,b.d from 表1 a left join 表B b on a.a=b.a
      

  3.   

    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
      

  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