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

यह रिकर्सिव कॉन्सट क्यों उत्पन्न करता है:डेटा बहुत लंबा

MySQL 8 CTE मैनुअल पेज से काफी नीचे एक उदाहरण है जो आपकी समस्या को दर्शाता है। मूल रूप से समस्या यह है कि आपके ids ABC . के लिए कॉलम बहुत छोटा है मान इसे असाइन किया जा रहा है क्योंकि इसकी चौड़ाई CTE के गैर-पुनरावर्ती भाग से प्राप्त होती है (जो प्रभावी रूप से id की लंबाई है यानी 2 अक्षर)। आप उस समस्या का समाधान CAST . से कर सकते हैं सभी परिणामों को फिट करने के लिए एक बड़ी पर्याप्त चौड़ाई उदा.:

with recursive cte(greatest_id, ids, total) as (
    select     id,
               CAST(id AS CHAR(5)) AS ids, 
               val
    from       tbl
    union all
    select     tbl.id,
               concat(cte.ids, tbl.id),
               cte.total + tbl.val
    from       cte 
    inner join tbl 
            on tbl.id > cte.greatest_id
           and cte.total + tbl.val <= 6
) 
select ids, total from cte

आपके डेमो का अपडेट




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. स्प्रिंग डेटा जेपीए - mysql - findById () खाली जब तक कि findAll () पहले नहीं कहा जाता है

  2. सभी MySql टेबल्स के लिए CREATE स्टेटमेंट जेनरेट करें

  3. MySQL - इस तालिका में क्या है को छोड़कर सभी का चयन करें

  4. Laravel:PDOException:ड्राइवर नहीं मिल सका

  5. बिना ओवरकिल के mysql स्कीमाटा को वर्जनिंग के साथ शुरू करना। अच्छे उपाय?