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