A表: B表:id   name     score id    name
-----------------------------------------------
1    张三     20 1     孙周
2    李四     33 2     张三
3    王五     70 3     谢飞
4    张三     60 4     王五
5    李四     90             5     杨军
 
select B.name as bname,sum(A.score) from B,A group by B.name得出的结果是什么呢?我想的到的是:    name    sum_score
---------------------------------------------------------------
孙周    0
张三    80
谢飞    0
王五    70
杨军    0
而实际上得到的是:name     sum_score
---------------------------------------------------------------
孙周     270多
张三     270多
谢飞     270多
....     ...这个结果不是我想要的,它把A表里所有的score加起来得出结果。   怎么才能得到我相要的结果,?

解决方案 »

  1.   

    什么意思?你能不能说的详细点,我不是已经加上group by 了么?!
      

  2.   

    这是比较好的方法了
    因为孙周、杨军这样的name在score表中没有记录,所以外连接只能补NULL 值了select B.name ,sum(A.score) as score from B left join A
    on B.name=A.name
    group by B.name语句执行结果
    孙周       NULL
    王五       70
    谢飞       NULL
    杨军       NULL
    张三       80
      

  3.   

    SELECT b.Name, ISNULL(SUM(a.Score), 0) AS score
    FROM b LEFT OUTER JOIN
          a ON b.Name = a.Name
    GROUP BY b.Name语句执行结果
    孙周       0
    王五       70
    谢飞       0
    杨军       0
    张三       80