sql按照另一个表的某字段值统计数量

表结构如下
表1
****************************

ziduan1 ziduan2
a 1
a 2
a 3
b 2
b 3
c 2
c 4
e 2

表2
*********************************

ziduan1
a
b
c
d
e

我希望查到如下结果:
********************

a 3
b 2
c 2
d 0
e 1

请问SQL如何写,谢谢
mysql下

badkano你好,你的语句确实可以实现,已经通过了测试,但我记得之前见到过更简便的方法,我现在也在找,本着学习的精神,希望找到后能和大家分享,也希望有更简便方法的同学,不吝赐教,感谢

回答缪昊轩:
如果不考虑第二个表,那是比较简单的,直接按下面就行
select count(*) ,ziduan1 from 表1 group by ziduan1
但如果想按照另外一张表的数据去查询,就不那么简单了

select b.ziduan1,ifnull(c.counts,0) from 表2 b left join
(select ziduan1,count(*) counts from 表1 group by ziduan1) c
on b.ziduan1=c.ziduan1

-----补充----
这个改了好几次,之前就是想弄的简单点,可惜欠考虑了
比如俩表直接left join,这样会出现d null的情况,而再统计count时把这条也算做一条记录了,你也找找吧,我也测测有更好的办法没

------补充-----
写了个这种写法,你看看
select b.ziduan1,
sum(case when a.ziduan1=b.ziduan1 then 1 else 0 end) from 表2 b
left join 表1 a on
a.ziduan1=b.ziduan1
group by b.ziduan1
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-12
使用group by
相似回答