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

osiągnij limit pamięci z pętlą wewnątrz pętli wewnątrz pętli

Wygenerowałbym zakres dni i dołączyłbym do tabeli pór roku, a następnie użyłbym jednego zapytania, aby uzyskać żądany wynik, np.:

SELECT dates.Date,
       coalesce(s.price, 0) AS price
FROM
  (SELECT a.Date
   FROM
     ( SELECT curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY AS Date, '0' AS price
      FROM
        (SELECT 0 AS a
         UNION ALL SELECT 1
         UNION ALL SELECT 2
         UNION ALL SELECT 3
         UNION ALL SELECT 4
         UNION ALL SELECT 5
         UNION ALL SELECT 6
         UNION ALL SELECT 7
         UNION ALL SELECT 8
         UNION ALL SELECT 9) AS a
      CROSS JOIN
        (SELECT 0 AS a
         UNION ALL SELECT 1
         UNION ALL SELECT 2
         UNION ALL SELECT 3
         UNION ALL SELECT 4
         UNION ALL SELECT 5
         UNION ALL SELECT 6
         UNION ALL SELECT 7
         UNION ALL SELECT 8
         UNION ALL SELECT 9) AS b
      CROSS JOIN
        (SELECT 0 AS a
         UNION ALL SELECT 1
         UNION ALL SELECT 2
         UNION ALL SELECT 3
         UNION ALL SELECT 4
         UNION ALL SELECT 5
         UNION ALL SELECT 6
         UNION ALL SELECT 7
         UNION ALL SELECT 8
         UNION ALL SELECT 9) AS c) a
   WHERE a.Date BETWEEN '$from' AND '$to'
   ORDER BY a.Date) dates
LEFT JOIN seasons s ON dates.Date BETWEEN s.start AND s.END

Skomplikowane zapytanie wewnętrzne pozwala uniknąć tworzenia tabeli tymczasowej (wziętej z generate dni od zakresu dat ) i działa do 1000 dni, ale utworzenie tabeli tymczasowej byłoby w porządku.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wstaw MySQL, jeśli warunek

  2. rekurencyjne samo zapytanie

  3. Nie można utworzyć tabeli mysql z powodu nieprawidłowej wartości daty i godziny ... dla funkcji str_to_date

  4. Jak mogę przechowywać symbol '€' w MySQL używając PHP?

  5. Utwórz zmienną tabeli w MySQL