Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL:Wählen Sie alle Daten zwischen Datumsbereichen aus und erhalten Sie übereinstimmende Daten der Tabellendaten

Ich habe das herausgefunden, indem ich die in der Lösung angegebene Abfrage geändert habe, um alle Daten zu erhalten.

Die folgende Abfrage gibt alle Daten und die Anzahl der IDs zurück, falls Datensätze vorhanden sind:

select d.date, count(v.id) from 
(select adddate('1970-01-01',t4.i*10000 + t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) date from
 (select 0 i 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 i 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 i 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 i 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 i 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) d
left join visitors v on d.date = v.date
where d.date between '2016-06-01' and '2016-06-30'
group by d.date
order by d.date

Der Datumsbereich wird mit freundlicher Genehmigung von @mark-bannister abgerufen und eine einfache Verknüpfung der Abfrage, die nach Ergebnissen sucht, und eine Sortierung liefert die Lösung.