Heim >Datenbank >MySQL-Tutorial >Wie erstelle ich eine Datumsreihe ohne temporäre Tabellen oder Variablen?
Generieren einer Datumsreihe ohne temporäre Tabellen oder Variablen
Trotz der Verfügbarkeit von Tabellen mit vordefinierten Datumsbereichen gilt dieser Ansatz als suboptimal. Wie können wir eine Reihe von Datumsangaben innerhalb eines bestimmten Intervalls generieren, ohne auf temporäre Tabellen oder Variablenmanipulationen zurückzugreifen?
Stellen Sie sich das folgende Szenario vor: Ihre Anwendung erfordert einen Bericht, der für jedes Datum eine Zeile zurückgibt, unabhängig von den verfügbaren Daten. Um dies zu erreichen, kann eine einfache Abfrage erstellt werden:
select dates.date, sum(sales.amount) from <series of dates between X and Y> dates left join sales on date(sales.created) = dates.date group by 1
Um die Erstellung einer Tabelle mit zahlreichen Datumsangaben zu vermeiden, wird eine alternative Lösung empfohlen:
select * from (select adddate('1970-01-01',t4*10000 + t3*1000 + t2*100 + t1*10 + t0) gen_date from (select 0 t0 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0, (select 0 t1 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1, (select 0 t2 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2, (select 0 t3 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3, (select 0 t4 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t4) v where gen_date between '2017-01-01' and '2017-12-31'
Diese Abfrage generiert effektiv eine Reihe von Daten innerhalb des angegebenen Bereichs, ohne eine separate Tabelle zu erstellen oder Variablen festzulegen.
Das obige ist der detaillierte Inhalt vonWie erstelle ich eine Datumsreihe ohne temporäre Tabellen oder Variablen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!