首頁 > 資料庫 > mysql教程 > 如何在MySQL中選擇包含空白行的日期之間的資料?

如何在MySQL中選擇包含空白行的日期之間的資料?

Barbara Streisand
發布: 2024-12-18 10:48:13
原創
337 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板