早教吧 育儿知识 作业答案 考试题库 百科 知识分享

sql按照另一个表的某字段值统计数量表结构如下表1a3b2c2d0e1请问SQL如何写,mysql下badkano你好,你的语句确实可以实现,已经通过了测试,但我记得之前见到过更简便的方法,我现在也在找,本着学

题目详情
sql按照另一个表的某字段值统计数量
表结构如下
表1
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