Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zapytanie MySQL, które dodaje puste miejsca, aby wypełnić luki

Jednym z rozwiązań jest wygenerowanie dat za pomocą podzapytania, a następnie dołączenie tego podzapytania do tabeli.

Jeśli potrzebujesz tylko ostatnich 7 dni, możesz spróbować:

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

jeśli zamiast bieżącej_daty chcesz umieścić w tabeli ostatnie 7 dni, zapytanie może wyglądać tak:

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

Zobacz skrzypce tutaj .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zredukuj zapytania MySQL do jednego zapytania, aby przyspieszyć

  2. Jak mogę utworzyć cotygodniową tabelę analizy kohortowej za pomocą mysql?

  3. Wybierz ostatni rekord z prawej tabeli podczas korzystania z join w mysql

  4. Jak ważne są tabele przeglądowe?

  5. Wyjątek uszkodzonej rury w aplikacji Grails