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加起来得出结果。 怎么才能得到我相要的结果,?
因为孙周、杨军这样的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
FROM b LEFT OUTER JOIN
a ON b.Name = a.Name
GROUP BY b.Name语句执行结果
孙周 0
王五 70
谢飞 0
杨军 0
张三 80