Auswählen von Daten zwischen Datumsangaben mit leeren Zeilen in MySQL
Das Abrufen von Daten zwischen bestimmten Datumsangaben aus einer Datenbank ist eine häufige Aufgabe. Allerdings kann es schwierig werden, wenn Sie innerhalb des Datumsbereichs auch leere Zeilen einschließen müssen. In diesem Artikel untersuchen wir eine Technik zur Behebung dieses Problems in MySQL.
Stellen Sie sich eine Tabelle namens „tbl“ mit Zeilen vor, die Daten und Datumsangaben enthalten:
2009-06-25 75 2009-07-01 100 2009-07-02 120
Eine typische Abfrage zur Auswahl Daten zwischen zwei Daten, beispielsweise „25.06.2009“ und „01.07.2009“, würden dies tun be:
SELECT data FROM tbl WHERE date BETWEEN '2009-06-25' AND '2009-07-01'
Bei dieser Abfrage werden jedoch alle leeren Datumsangaben innerhalb dieses Bereichs übersehen. Um sie einzubinden, bietet MySQL ein leistungsstarkes Konzept namens „Kalendertabellen“.
Eine Kalendertabelle ist eine Hilfstabelle, die eine Reihe von Datumsangaben enthält. Mit einer in dieser Anleitung gezeigten Technik können Sie ganz einfach eine erstellen:
-- create some infrastructure CREATE TABLE ints (i INTEGER); INSERT INTO ints VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9); -- only works for 100 days, add more ints joins for more 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 alle Zeilen von „25.06.2009“ bis „01.07.2009“ zurück, einschließlich leerer Zeilen mit einem Nullwert für „Daten“. Beachten Sie, dass Sie diese Technik optimieren können, indem Sie die Unterabfrage durch eine regelmäßig aktualisierte Kalendertabelle ersetzen.
Das obige ist der detaillierte Inhalt vonWie wähle ich Daten zwischen Datumsangaben einschließlich leerer Zeilen in MySQL aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!