我想报告一下我们每天面试的次数。
所以我有一张面试表
例如
面试ID,状态,日期,评论…
以及包含2005年至2020年所有日期的日期参考表。有一个名为ref的日期字段。
我的问题是:
SELECT count(*) as cnt FROM `interviews`
right JOIN `dateRef` ON `date` = ref where type = 2
and date > date_sub(now(),interval 7 day) group by date_format(ref,'%Y-%m-%d')
很好的展示了我们做过的采访,但是当我们没有做任何采访的时候…
例如,返回:
1
2
4
但它应该会回来
0
1
0
2
0
4
0
编辑:
显然问题来自where子句,因为如果删除它,查询就可以正常工作…
最佳答案
尝试替换为
right join
相反
left join
另一个变化是
where type = 2
到
where type = 2 OR type IS NULL
所以最后一个问题
SELECT count(*) as cnt FROM `interviews`
right JOIN `dateRef` ON `date` = ref where (type = 2 OR type is null)
and date > date_sub(now(),interval 7 day) group by date_format(ref,'%Y-%m-%d')
关于mysql - 按日期计数和分组应该在没有值的情况下返回0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4322652/