首頁 > 資料庫 > mysql教程 > 如何處理 MySQL 查詢中的缺失日期?

如何處理 MySQL 查詢中的缺失日期?

Linda Hamilton
發布: 2024-12-23 11:48:34
原創
321 人瀏覽過

How to Handle Missing Dates in MySQL Queries?

如何在MySQL 查詢中填入資料間隙

這個問題探討了MySQL 中的一個常見問題,即在查詢之間查詢時可能會出現資料間隙具體日期。使用者的現有查詢檢索基於日期的指標,但不包含缺失日期的資料。

使用虛擬行源填充資料間隙

填充資料間隙,解決方案涉及建立一個名為「dates」的輔助表。該表包含從所需的開始到結束範圍的所有日期。然後,在日期表和訊息表之間執行 LEFT JOIN。

這是修改後的查詢:

SELECT  d.dt AS date,
        COUNT(*) AS total,
        SUM(attitude = 'positive') AS positive,
        SUM(attitude = 'neutral') AS neutral,
        SUM(attitude = 'negative') AS negative
FROM    dates d
LEFT JOIN
        messages m
ON      m.posted_at >= d.dt
        AND m.posted_at < d.dt + INTERVAL 1 DAYS
        AND spam = 0
        AND duplicate = 0
        AND ignore = 0
GROUP BY
        d.dt
ORDER BY
        d.dt
登入後複製

解釋:

  • 日期表產生一組不同的日期
  • LEFT JOIN確保包含日期表中的所有日期,即使不存在符合的訊息。
  • ON 子句中的篩選器可確保僅包含給定的有效訊息包括日期。
  • GROUP BY 子句聚合每個資料date.

使用虛擬行來源的替代方法

MySQL 的獨特之處在於它缺乏用於生成日期序列的內建函數。但是,在其他資料庫系統中也有一些替代方法:

  • PostgreSQL 具有generate_series() 函式。
  • Oracle 和 SQL Server 支援使用 CONNECT BY 或遞歸 CTE 進行遞迴。

以上是如何處理 MySQL 查詢中的缺失日期?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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