Heim >Datenbank >MySQL-Tutorial >Wie gehe ich mit fehlenden Daten in MySQL-Abfragen um?
So füllen Sie Datenlücken in Ihren MySQL-Abfragen
Diese Frage untersucht ein häufiges Problem in MySQL, bei dem bei Abfragen zwischen Datenlücken auftreten können bestimmte Termine. Die vorhandene Abfrage des Benutzers ruft datumsbasierte Metriken ab, enthält jedoch keine Daten für fehlende Daten.
Datenlücken mithilfe einer Dummy-Zeilenquelle füllen
Um die Datenlücken zu schließen , besteht die Lösung darin, eine Hilfstabelle mit dem Namen „dates“ zu erstellen. Diese Tabelle enthält alle Daten vom gewünschten Start- bis Endbereich. Anschließend wird ein LEFT JOIN zwischen der Datumstabelle und der Nachrichtentabelle ausgeführt.
Hier ist die geänderte Abfrage:
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
Erklärung:
Alternativen zur Verwendung von Dummy Rowsource
MySQL ist einzigartig, da es keine integrierte Funktion zum Generieren einer Datumsfolge enthält. Es gibt jedoch einige alternative Ansätze, die in anderen Datenbanksystemen verfügbar sind:
Das obige ist der detaillierte Inhalt vonWie gehe ich mit fehlenden Daten in MySQL-Abfragen um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!