Heim > Datenbank > MySQL-Tutorial > Wie kann ich fehlende Daten in MySQL-Abfragen für vollständige Datumsbereiche ergänzen?

Wie kann ich fehlende Daten in MySQL-Abfragen für vollständige Datumsbereiche ergänzen?

Susan Sarandon
Freigeben: 2024-12-16 18:52:22
Original
520 Leute haben es durchsucht

How Can I Populate Missing Dates in MySQL Queries for Complete Date Ranges?

Datenlücken für Datumsbereiche in MySQL füllen

Es kann vorkommen, dass es notwendig wird, Daten zwischen zwei bestimmten Daten abzurufen, auch wenn Für bestimmte Daten innerhalb dieses Bereichs sind keine Einträge vorhanden. Um dieser Herausforderung zu begegnen, besteht ein beliebter Ansatz darin, „Kalendertabellen“ zu erstellen.

Beachten Sie die folgende Tabellenstruktur:

CREATE TABLE data (
  date DATE,
  value INT
);

INSERT INTO data VALUES
  ('2009-06-25', 75),
  ('2009-07-01', 100),
  ('2009-07-02', 120);
Nach dem Login kopieren

Um alle Daten zwischen dem 25.06.2009 und abzurufen '2009-07-01' kann die folgende Abfrage verwendet werden:

SELECT date, value
FROM data
WHERE date BETWEEN '2009-06-25' AND '2009-07-01';
Nach dem Login kopieren

Diese Abfrage schließt jedoch alle Daten innerhalb des aus angegebenen Bereich, dem keine Daten zugeordnet sind. Um dies zu beheben, wird eine Kalendertabelle verwendet.

Um eine Kalendertabelle für den angegebenen Datumsbereich zu erstellen, können die folgenden Schritte ausgeführt werden:

CREATE TABLE cal (
  date DATE
);

INSERT INTO cal (date)
SELECT DATE_ADD('2009-06-25', INTERVAL i * 10 + j DAY)
FROM ints i CROSS JOIN ints j
WHERE DATE_ADD('2009-06-25', INTERVAL i * 10 + j DAY) BETWEEN '2009-06-25' AND '2009-07-01';
Nach dem Login kopieren

Die Kalendertabelle enthält alle Daten zwischen „25.06.2009“ und „01.07.2009“, jedoch ohne zugehörige Daten. Um die gewünschten Daten zusammen mit den Lücken abzurufen, kann ein Left Join verwendet werden:

SELECT cal.date, data.value
FROM cal
LEFT JOIN data ON cal.date = data.date
WHERE cal.date BETWEEN '2009-06-25' AND '2009-07-01';
Nach dem Login kopieren

Diese Abfrage gibt alle Daten innerhalb des angegebenen Bereichs zurück, einschließlich der Daten ohne Daten, die mit NULL-Werten für dargestellt werden die Wertespalte.

Das obige ist der detaillierte Inhalt vonWie kann ich fehlende Daten in MySQL-Abfragen für vollständige Datumsbereiche ergänzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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