MySQL8CTEのはるか下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