SQL计数未显示0结果

问题描述 投票:0回答:1

我有2个表member_asrama和asrama。我想对带有条件的行row_asrama进行计数,但结果不显示来自count的结果0。

表member_asrama:

id    asrama_id    period_id    
1     1            1

表asrama

id    name       
1     A
2     B

我的查询

SELECT asrama.id,asrama.name, COUNT(*) as cnt
FROM asrama
left join member_asrama
on asrama.id = member_asrama.`asrama_id` 
where member_asrama.`period_id` = 1
group by asrama.id

结果

asrama.id asrama.name cnt
1          A           1

我想要结果

asrama.id asrama.name cnt
1          A           1
2          B           0
mysql sql
1个回答
0
投票

基本上,该条件必须在ON子句中:

select a.id, a.name, count(ma.asrama_id) as cnt
from asrama a left join
     member_asrama ma
     on a.id = ma.asrama_id and
        ma.period_id = 1
group by a.id, a.name;

注意其他更改:

  • COUNT()member_asrama开始计数一列。这样就可以在结果中显示0
  • 表别名使查询更易于编写和阅读。
  • 反引号使查询更难编写和阅读-不必要。
  • 我在GROUP BY中包括了两列。从技术上讲,如果id是主键/唯一键,则没有必要。但是,如果您正在学习SQL,这是一个好习惯。
© www.soinside.com 2019 - 2024. All rights reserved.