mysqli带WHERE与GROUP BY的COUNT查询:如何显示无记录日期的0计数
解决特定日期统计无记录日期不显示的问题
我之前在做一项日期记录统计的需求时,遇到了个挺棘手的问题:我需要统计一批特定日期的记录数量,但用常规查询语句跑出来的结果里,那些没有对应记录的日期直接就“消失”了,完全达不到我要展示所有目标日期(哪怕计数为0)的要求。
后来我摸索出了有效的解决方法:先新建一张专门存放所有待查询特定日期的表(比如命名为target_dates,表中仅需一个存储日期的字段,比如target_date,把所有需要统计的日期都预先录入进去),接着通过左连接这张日期表和业务数据表的方式编写查询语句,这样就能确保所有目标日期都能在结果中显示,无记录的日期对应的计数自动为0。
给大家贴一下我最终用到的查询语句示例(假设业务数据表为business_records,日期字段是record_date,统计的是记录ID的数量):
SELECT td.target_date, COUNT(br.record_id) AS record_count FROM target_dates td LEFT JOIN business_records br ON td.target_date = br.record_date GROUP BY td.target_date ORDER BY td.target_date;
用这个方式查询,不管目标日期在业务表里有没有对应记录,都会被包含在结果集中,完美解决了之前的问题!
内容的提问来源于stack exchange,提问作者Rooneymelooney
相关产品推荐
相关产品推荐

