MySQL日期範圍填入缺失值
假設您有一個包含兩個欄位(日期和分數)的表,您希望填入缺失日期以獲得連續的值序列。例如,如果您的表格目前包含以下資料:
<code>日期 分数 ----------------- 2010-08-01 19 2010-08-02 21 2010-08-04 14 2010-08-07 10 2010-08-10 14</code>
您希望用0填滿缺失的日期(2010-08-03、2010-08-05和2010-08-06),以獲得以下結果:
<code>日期 分数 ----------------- 2010-08-01 19 2010-08-02 21 2010-08-03 0 2010-08-04 14 2010-08-05 0 2010-08-06 0 2010-08-07 10 2010-08-10 14</code>
為了實現這一點,您可以使用以下查詢:
<code class="language-sql">SELECT x.ts AS timestamp, COALESCE(y.score, 0) AS cnt FROM (SELECT DATE_ADD('2010-06-06', INTERVAL n.id - 1 DAY) AS ts FROM numbers n WHERE DATE_ADD('2010-06-06', INTERVAL n.id -1 DAY) < '2010-08-11') x LEFT JOIN your_table y ON DATE(x.ts) = DATE(y.date);</code>
以下是查詢的細分:
請將your_table
替換為您實際的表名。 確保您有一個名為numbers
的表,其中包含一個名為id
的自動遞增列,該列包含從1開始的連續整數。 如果沒有,您需要先建立一個。 例如: CREATE TABLE numbers (id INT AUTO_INCREMENT PRIMARY KEY);
然後插入足夠數量的記錄以覆蓋您的日期範圍。
以上是如何用零值填入 MySQL 範圍的缺失日期?的詳細內容。更多資訊請關注PHP中文網其他相關文章!