Heim >Datenbank >MySQL-Tutorial >Wie füllt man fehlende Daten in einem MySQL-Datensatz mithilfe einer Zahlentabelle aus?

Wie füllt man fehlende Daten in einem MySQL-Datensatz mithilfe einer Zahlentabelle aus?

Barbara Streisand
Barbara StreisandOriginal
2025-01-23 16:52:09558Durchsuche

How to Fill Missing Dates in a MySQL Dataset Using a Numbers Table?

MySQL: Fehlende Daten im Datumsbereich ergänzen

Im Bereich der Datenverwaltung kommt es sehr häufig vor, dass Datensätze fehlende Daten enthalten. Um dieses Problem zu lösen, bietet MySQL eine Lösung zum Auffüllen dieser fehlenden Daten und sorgt so für eine kontinuierliche Datumsfolge.

Der Schlüssel zum Ausfüllen fehlender Daten in MySQL liegt in der Verwendung des Zahlentabellen-Tricks. Bei dieser Methode wird eine Tabelle mit dem Namen „Zahlen“ erstellt, die eine automatisch inkrementierende Ganzzahlspalte enthält, praktisch eine inkrementierende Liste von Zahlen.

Als nächstes füllen Sie die Tabelle „Zahlen“ mit genügend Zeilen. Dies gewährleistet einen ausreichenden Bereich ansteigender Zahlen, um den gewünschten Datumsbereich abzudecken.

Um eine Liste mit Daten zu erstellen, verwenden Sie die Funktion DATE_ADD. Ersetzen Sie in der folgenden Abfrage insbesondere „2010-06-06“ und „2010-06-14“ durch Ihr eigenes Start- und Enddatum (stellen Sie sicher, dass Sie das Format JJJJ-MM-TT verwenden):

<code class="language-sql">SELECT DATE_ADD('2010-06-06', INTERVAL `n`.`id` - 1 DAY)
FROM `numbers` `n`
WHERE DATE_ADD('2010-06-06', INTERVAL `n`.`id` -1 DAY) < '2010-06-14';</code>

Verwenden Sie die Ergebnisse dieser Abfrage als Zwischentabelle, um basierend auf dem Zeitteil einen LEFT JOIN für die Originaldatentabelle durchzuführen:

<code class="language-sql">SELECT `x`.`ts` AS `timestamp`,
       COALESCE(`y`.`score`, 0) AS `cnt`
FROM (SELECT DATE_FORMAT(DATE_ADD('2010-06-06', INTERVAL `n`.`id` - 1 DAY), '%m/%d/%Y') AS `ts`
      FROM `numbers` `n`
      WHERE DATE_ADD('2010-06-06', INTERVAL `n`.`id` - 1 DAY) < '2010-06-14') `x`
LEFT JOIN `your_table` `y` ON DATE(`y`.`date_column`) = DATE(`x`.`ts`);</code>

Um das Datumsformat beizubehalten, schließen Sie das obige ts-Feld in eine DATE_FORMAT-Funktion ein:

<code class="language-sql">DATE_FORMAT(`x`.`ts`, '%d.%m.%Y') AS `timestamp`</code>

Indem Sie diese Schritte befolgen, können Sie fehlende Daten in Ihrem MySQL-Datensatz effizient ergänzen und so eine nahtlose Darstellung des erforderlichen Datumsbereichs gewährleisten.

Das obige ist der detaillierte Inhalt vonWie füllt man fehlende Daten in einem MySQL-Datensatz mithilfe einer Zahlentabelle aus?. 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