Heim >Datenbank >MySQL-Tutorial >Wie fülle ich fehlende Daten in einem MySQL-Bereich mit Nullwerten?

Wie fülle ich fehlende Daten in einem MySQL-Bereich mit Nullwerten?

Linda Hamilton
Linda HamiltonOriginal
2025-01-23 16:47:09555Durchsuche

How to Fill Missing Dates in a MySQL Range with Zero Values?

MySQL-Datumsbereich füllt fehlende Werte

Angenommen, Sie haben eine Tabelle mit zwei Spalten (Datum und Punktzahl) und möchten fehlende Daten ergänzen, um eine kontinuierliche Wertefolge zu erhalten. Wenn Ihre Tabelle beispielsweise derzeit die folgenden Daten enthält:

<code>日期      分数
-----------------
2010-08-01  19
2010-08-02  21
2010-08-04  14
2010-08-07  10
2010-08-10  14</code>

Sie möchten die fehlenden Daten (03.08.2010, 05.08.2010 und 06.08.2010) mit Nullen füllen, um das folgende Ergebnis zu erhalten:

<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>

Um dies zu erreichen, können Sie die folgende Abfrage verwenden:

<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>

Hier ist eine Aufschlüsselung der Abfrage:

  • Erstellen Sie eine Tabelle mit Zahlen (Zahlen) mit automatisch inkrementierenden Werten.
  • Verwenden Sie DATE_ADD, um eine Liste von Daten ab einem bestimmten Startdatum (im Beispiel „06.06.2010“) zu erstellen und die Anzahl der Tage basierend auf der ID der Zahl in der Zahlentabelle zu erhöhen.
  • Verwenden Sie LEFT JOIN, um die Datumsliste basierend auf dem Datumsteil mit Ihrer ursprünglichen Tabelle y zusammenzuführen.
  • Verwenden Sie COALESCE, um alle Nullwerte in y.score durch 0 zu ersetzen.
  • Sie können DATE_FORMAT verwenden, um das Datumsformat bei Bedarf zu ändern.

Bitte ersetzen Sie your_table durch Ihren tatsächlichen Tabellennamen. Stellen Sie sicher, dass Sie über eine Tabelle mit dem Namen numbers verfügen, die eine automatisch inkrementierende Spalte mit dem Namen id enthält, die aufeinanderfolgende Ganzzahlen beginnend bei 1 enthält. Wenn nicht, müssen Sie zuerst eines erstellen. Beispiel: CREATE TABLE numbers (id INT AUTO_INCREMENT PRIMARY KEY); Fügen Sie dann eine ausreichende Anzahl von Datensätzen ein, um Ihren Datumsbereich abzudecken.

Das obige ist der detaillierte Inhalt vonWie fülle ich fehlende Daten in einem MySQL-Bereich mit Nullwerten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn