sql >> Database teknologi >  >> RDS >> Mysql

MySQL-forespørgsel, der tilføjer tomme felter for at udfylde hullerne

En løsning er at generere datoerne med en underforespørgsel og derefter forbinde denne underforespørgsel med din tabel.

Hvis du kun har brug for de sidste 7 dage, kan du prøve med dette:

select d.testdate, coalesce(t.val1,0), coalesce(t.val2,0)
from
  (select current_date as testdate
   union all select current_date - interval 1 day
   union all select current_date - interval 2 day
   union all select current_date - interval 3 day
   union all select current_date - interval 4 day
   union all select current_date - interval 5 day
   union all select current_date - interval 6 day) d
  left join tblMyData t
  on d.testdate = t.testdate

hvis du i stedet for den aktuelle_dato vil have de sidste 7 dage i tabellen, kan din forespørgsel være sådan her:

select m.m - interval d day, coalesce(t.val1,0), coalesce(t.val2,0)
from
  (select max(testdate) as m from tblMyData) m
  cross join
  (select 0 as d
   union all select 1
   union all select 2
   union all select 3
   union all select 4
   union all select 5
   union all select 6) d
  left join tblMyData t
  on m.m - interval d day = t.testdate

Se venligst en violin her .



  1. Sådan multipliceres værdier ved hjælp af SQL

  2. MySQL Statisk Hash-indeks

  3. Vigtigheden af ​​at vedligeholde en HIPAA-kompatibel database

  4. det tager for meget tid at hente store json-data fra serveren ved hjælp af php volley-biblioteket