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