Heim >Datenbank >MySQL-Tutorial >Wie füllt man fehlende Daten beim Abrufen von MySQL-Daten aus?

Wie füllt man fehlende Daten beim Abrufen von MySQL-Daten aus?

Barbara Streisand
Barbara StreisandOriginal
2024-12-12 19:09:11446Durchsuche

How to Populate Missing Dates in MySQL Data Retrievals?

Daten zwischen Datumsangaben abrufen: Leere Datensätze füllen

In MySQL wird die Auswahl von Daten innerhalb eines bestimmten Datumsbereichs üblicherweise mit dem BETWEEN-Operator erreicht. Dieser Ansatz kann jedoch dazu führen, dass Daten fehlen, wenn keine Daten vorhanden sind. Um dieses Problem zu lösen, wird eine Technik mit „Kalendertabellen“ eingesetzt.

Das Konzept einer Kalendertabelle besteht darin, eine Tabelle zu erstellen, die eine Folge von Datumsangaben innerhalb des gewünschten Bereichs enthält. Dies wird mit dem folgenden Code erreicht:

CREATE TABLE ints (i INTEGER);
INSERT INTO ints VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);

Diese Tabelle stellt einen Zahlenbereich von 0 bis 9 bereit. Um die Kalendertabelle zu generieren, verbinden wir Ints mehrmals mit sich selbst, um eine Liste von Datumsintervallen zu erstellen:

SELECT '2009-06-25' + INTERVAL a.i * 10 + b.i DAY as date
FROM ints a JOIN ints b
ORDER BY a.i * 10 + b.i

Das Ergebnis ist eine Tabelle mit einer Abfolge von Daten von „25.06.2009“ bis „04.07.2009“. Um die Daten abzurufen, haben wir die Kalendertabelle mit der Originaltabelle verknüpft:

SELECT cal.date, tbl.data
FROM (
    SELECT '2009-06-25' + INTERVAL a.i * 10 + b.i DAY as date
    FROM ints a JOIN ints b
    ORDER BY a.i * 10 + b.i
) cal LEFT JOIN tbl ON cal.date = tbl.date
WHERE cal.date BETWEEN '2009-06-25' AND '2009-07-01';

Diese Abfrage gibt die Daten für alle Daten zwischen „25.06.2009“ und „01.07.2009“ zurück. einschließlich Zeilen ohne Daten, die mit „0“ gefüllt sind.

Das obige ist der detaillierte Inhalt vonWie füllt man fehlende Daten beim Abrufen von MySQL-Daten 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