在 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中文网其他相关文章!