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

表结构如下表1****************************ziduan1ziduan2a1a2a3b2b3c2c4e2表2******************... 表结构如下
表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
但如果想按照另外一张表的数据去查询,就不那么简单了
展开
 我来答
badkano
推荐于2017-11-25 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885365
团长

向TA提问 私信TA
展开全部
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
缪昊轩
2013-03-12 · 超过26用户采纳过TA的回答
知道答主
回答量:137
采纳率:0%
帮助的人:78.3万
展开全部
使用group by
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式