Dlouhá cesta dolů na MySQL 8 CTE stránka s manuálem
je příklad, který ukazuje problém, který máte. Problém je v zásadě v tom, že vaše ids
sloupec je příliš úzký pro ABC
hodnota, která je mu přiřazena, když získá svou šířku z nerekurzivní části CTE (což je v podstatě délka ids
tedy 2 znaky). Tento problém můžete vyřešit pomocí CAST
na dostatečně velkou šířku, aby se vešly všechny výsledky, např.:
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