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

Was ist der einfachste Weg, um leere Daten in SQL-Ergebnissen aufzufüllen (entweder auf mysql- oder perl-Ende)?

Wenn Sie so etwas serverseitig benötigen, erstellen Sie normalerweise eine Tabelle, die alle möglichen Daten zwischen zwei Zeitpunkten enthält, und verknüpfen diese Tabelle dann mit Abfrageergebnissen. Etwa so:

create procedure sp1(d1 date, d2 date)
  declare d datetime;

  create temporary table foo (d date not null);

  set d = d1
  while d <= d2 do
    insert into foo (d) values (d)
    set d = date_add(d, interval 1 day)
  end while

  select foo.d, count(date)
  from foo left join table on foo.d = table.date
  group by foo.d order by foo.d asc;

  drop temporary table foo;
end procedure

In diesem speziellen Fall wäre es besser, eine kleine Überprüfung auf der Client-Seite vorzunehmen, wenn das aktuelle Datum nicht vorher + 1 ist, fügen Sie einige zusätzliche Zeichenketten hinzu.