有2个表,如下:
表a:
id      cname
1        张
2        林
3        王
4        刘表b:
id      charge
1        30
3        80如何实现如下结果:
id        cname      charge
1          张          30
2          林           0或null或干脆显示空白
3          王          80
4          刘           0或null或干脆显示空白

解决方案 »

  1.   


    Select
    A.id,
    A.cname,
    IsNull(B.charge, 0) As charge
    From
    A
    Left Join
    B
    On A.id = B.id
      

  2.   

    select a.*,b.charge from 表a a left jion 表b b where a.id=b.id order by id
      

  3.   


    Create Table a
    (id Int,
     cname Nvarchar(10))
    Insert a Select 1,        N'张'
    Union All Select 2,        N'林'
    Union All Select 3,        N'王'
    Union All Select 4,        N'刘'Create Table b
    (id Int,
     charge Int)
    Insert b Select 1,        30
    Union All Select 3,        80
    GO
    Select
    A.id,
    A.cname,
    IsNull(B.charge, 0) As charge
    From
    A
    Left Join
    B
    On A.id = B.id
    Go
    Drop Table a, b
    --Result
    /*
    id cname charge
    1 张 30
    2 林 0
    3 王 80
    4 刘 0
    */
      

  4.   

    left join --实现
    2000或以下的版本可用
    *=
      

  5.   

    SQL 2005不能用LEFT JOIN?!應該不會吧。沒有2005暫時不能測試。
      

  6.   

    LEFT OUTER JOIN 或 LEFT JOINSELECT a.id, a.cname, b.charge
    FROM a LEFT OUTER JOIN b On a.id = b.id
      

  7.   

    Select A.id,A.cname,IsNull(B.charge, 0) As charge 
    From A 
    Left Outer  Join B 
    On A.id = B.id在SQL2005中测试通过
      

  8.   

    谢谢,找到我查询不对的原因了:昨天为了省事,表b 我没有全部显示,其实,完整的表是这样的:表a:
    id      cname
    1        张
    2        林
    3        王
    4        刘表b:
    id      charge  note
    1        30      晚班
    3        80      加班如何实现如下结果(按条件加班查询):
    id        cname      charge
    1          张           0或null或干脆显示空白
    2          林           0或null或干脆显示空白
    3          王          80
    4          刘           0或null或干脆显示空白
    我的sql:
    Select A.id,A.cname,IsNull(B.charge, 0) As charge 
    From A 
    Left Outer  Join B 
    On A.id = B.id
    where b.note='加班'查询结果:3          王          80   加班其他没有了
      

  9.   

    這麼修改即可Select A.id,A.cname,IsNull(B.charge, 0) As charge 
    From A 
    Left Outer  Join B 
    On A.id = B.id
    And b.note='加班' -- Where 修改為And即可