MySQL-Abfrage zum Anzeigen monatlicher Datensätze auch bei fehlenden Daten
Frage:
In a Wenn Sie monatliche Datensätze aus einer Benutzertabelle abrufen müssen, kann es sein, dass für bestimmte Monate Daten fehlen. Wie können Sie dieses Problem lösen und sicherstellen, dass alle Monate angezeigt werden, unabhängig davon, ob sie Daten enthalten oder nicht?
Antwort:
Um monatliche Benutzerdatensätze abzurufen, einschließlich Für diejenigen aus Monaten ohne Einträge kann eine Lösung mithilfe einer Kombination aus einer abgeleiteten Tabelle und einem Left Join implementiert werden.
SELECT COUNT(u.userID) AS total, m.month, YEAR(m.merge_date) AS year FROM ( SELECT '2013-01-01' AS merge_date UNION SELECT '2013-02-01' AS merge_date UNION SELECT '2013-03-01' AS merge_date UNION SELECT '2013-04-01' AS merge_date UNION SELECT '2013-05-01' AS merge_date UNION SELECT '2013-06-01' AS merge_date UNION SELECT '2013-07-01' AS merge_date UNION SELECT '2013-08-01' AS merge_date UNION SELECT '2013-09-01' AS merge_date UNION SELECT '2013-10-01' AS merge_date UNION SELECT '2013-11-01' AS merge_date UNION SELECT '2013-12-01' AS merge_date ) AS m LEFT JOIN users u ON MONTH(m.merge_date) = MONTH(u.userRegistredDate) AND YEAR(m.merge_date) = YEAR(u.userRegistredDate) GROUP BY m.merge_date ORDER BY 1+1;
Erklärung:
Durch die Verwendung des Left Join ruft die Abfrage Daten sowohl aus der Tabelle „Benutzer“ als auch aus der abgeleiteten Tabelle ab und stellt so sicher, dass die Ergebnisse alle Monate umfassen, auch diejenigen ohne entsprechende Benutzerdatensätze. Diese Methode bewältigt effektiv Situationen, in denen Daten für bestimmte Monate fehlen.
Das obige ist der detaillierte Inhalt vonWie zeige ich monatliche Datensätze in MySQL an, auch wenn Daten fehlen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!