首页 >数据库 >mysql教程 >如何在MySQL中选择包含空行的日期之间的数据?

如何在MySQL中选择包含空行的日期之间的数据?

Barbara Streisand
Barbara Streisand原创
2024-12-18 10:48:13341浏览

How to Select Data Between Dates Including Empty Rows in MySQL?

在 MySQL 中选择具有空行的日期之间的数据

从数据库中检索指定日期之间的数据是一项常见任务。但是,当您还需要在日期范围内包含空行时,这可能会变得具有挑战性。在本文中,我们将探索一种在 MySQL 中解决此问题的技术。

考虑一个名为“tbl”的表,其中的行包含数据和日期:

2009-06-25    75
2009-07-01    100
2009-07-02    120

选择的典型查询两个日期之间的数据,例如“2009-06-25”和“2009-07-01”,将be:

SELECT data FROM tbl WHERE date BETWEEN '2009-06-25' AND '2009-07-01'

但是,此查询将错过此范围内的任何空日期。为了包含它们,MySQL 提供了一个强大的概念,称为“日历表”。

日历表是包含一系列日期的辅助表。您可以使用本指南演示的技术轻松创建一个:

-- create some infrastructure
CREATE TABLE ints (i INTEGER);
INSERT INTO ints VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);

-- only works for 100 days, add more ints joins for more
SELECT cal.date, tbl.data
FROM (
    SELECT '2009-06-25' + INTERVAL a.i * 10 + b.i DAY as date
    FROM ints a JOIN ints b
    ORDER BY a.i * 10 + b.i
) cal LEFT JOIN tbl ON cal.date = tbl.date
WHERE cal.date BETWEEN '2009-06-25' AND '2009-07-01';

此查询将返回从“2009-06-25”到“2009-07-01”的所有行,包括带有“数据”的值为零。请注意,您可以通过用定期更新的日历表替换子查询来优化此技术。

以上是如何在MySQL中选择包含空行的日期之间的数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn