MySQL日期范围填充缺失值
假设您有一个包含两列(日期和分数)的表,您希望填充缺失日期以获得连续的值序列。例如,如果您的表当前包含以下数据:
<code>日期 分数 ----------------- 2010-08-01 19 2010-08-02 21 2010-08-04 14 2010-08-07 10 2010-08-10 14</code>
您希望用0填充缺失的日期(2010-08-03、2010-08-05和2010-08-06),以获得以下结果:
<code>日期 分数 ----------------- 2010-08-01 19 2010-08-02 21 2010-08-03 0 2010-08-04 14 2010-08-05 0 2010-08-06 0 2010-08-07 10 2010-08-10 14</code>
为了实现这一点,您可以使用以下查询:
<code class="language-sql">SELECT x.ts AS timestamp, COALESCE(y.score, 0) AS cnt FROM (SELECT DATE_ADD('2010-06-06', INTERVAL n.id - 1 DAY) AS ts FROM numbers n WHERE DATE_ADD('2010-06-06', INTERVAL n.id -1 DAY) < '2010-08-11') x LEFT JOIN your_table y ON DATE(x.ts) = DATE(y.date);</code>
以下是查询的细分:
请将your_table
替换为您实际的表名。 确保您有一个名为numbers
的表,其中包含一个名为id
的自动递增列,该列包含从1开始的连续整数。 如果没有,您需要先创建一个。 例如: CREATE TABLE numbers (id INT AUTO_INCREMENT PRIMARY KEY);
然后插入足够数量的记录以覆盖您的日期范围。
以上是如何用零值填充 MySQL 范围中的缺失日期?的详细内容。更多信息请关注PHP中文网其他相关文章!