Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

लूप के अंदर लूप के साथ मेमोरी लिमिट तक पहुंचें

मैं दिनों की एक श्रृंखला उत्पन्न करता हूं और आपकी सीज़न तालिका के विरुद्ध जुड़ता हूं, और वांछित परिणाम प्राप्त करने के लिए एक ही क्वेरी का उपयोग करता हूं, जैसे:

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

जटिल आंतरिक क्वेरी एक अस्थायी तालिका के निर्माण से बचती है (generate से ली गई है। दिनांक सीमा से दिन ) और 1000 दिनों तक काम करता है, लेकिन एक अस्थायी तालिका बनाना ठीक रहेगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Google मानचित्र में रीयल टाइम ट्रैकिंग

  2. MySQL किसी अन्य तालिका से कॉलम नामों का उपयोग करता है

  3. MySQL ट्रिगर तालिका को अपडेट नहीं कर सकता - त्रुटि 1442 प्राप्त करना

  4. लारवेल और एडब्ल्यूएस क्लाउडफ्रंट

  5. हटाएं - मैं लक्ष्य तालिका निर्दिष्ट नहीं कर सकता?