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
但如果想按照另外一张表的数据去查询,就不那么简单了 展开
表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
但如果想按照另外一张表的数据去查询,就不那么简单了 展开
2个回答
展开全部
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
(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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |