本文介绍了如何填补 MySQL 中的日期空白?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!
问题描述
如何填补 MySQL 中的日期空白?这是我的查询:
<前>SELECT DATE(posted_at) AS 日期,COUNT(*) AS 总数,SUM(attitude = 'positive') 为正,SUM(attitude = 'neutral') 作为中立,SUM(attitude = 'negative') AS 负数从`消息`WHERE (`messages`.brand_id = 1)AND (`messages`.`spam` = 0AND `messages`.`duplicate` = 0AND `messages`.`ignore` = 0)GROUP BY 日期 ORDER BY 日期它返回正确的结果集 - 但我想用零填充日期开始和结束之间的空白.我该怎么做?
解决方案
您需要创建一个辅助表并用从 start
到 end
的所有日期填充它,然后只需 LEFT JOIN
与该表:
基本上,您在这里需要的是一个虚拟行源.
MySQL 是唯一缺乏生成它的方法的主要系统.
PostgreSQL 实现了一个特殊的函数 generate_series 来做到这一点,而 Oracle 和 SQL Server 可以使用递归(CONNECT BY 和递归CTE,相应地).
How i can fill date gaps in MySQL? Here is my query:
It returns proper result set - but i want to fill gaps between dates start and end by zeros. How i can do this?
解决方案
You'll need to create a helper table and fill it with all dates from start to end, then just LEFT JOIN with that table:
Basically, what you need here is a dummy rowsource.
MySQL is the only major system which lacks a way to generate it.
PostgreSQL implements a special function generate_series to do that, while Oracle and SQL Server can use recursion (CONNECT BY and recursive CTEs, accordingly).
这篇关于如何填补 MySQL 中的日期空白?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!
本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!