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
Freigeben: 2025-01-23 16:52:09
Original
583 Leute haben es durchsucht

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

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';
Nach dem Login kopieren

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

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`);
Nach dem Login kopieren

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

DATE_FORMAT(`x`.`ts`, '%d.%m.%Y') AS `timestamp`
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage