Một chặng đường dài trên MySQL 8 CTE trang thủ công
là một ví dụ cho thấy vấn đề bạn đang gặp phải. Về cơ bản, vấn đề là ids
của bạn cột quá hẹp đối với ABC
giá trị được gán cho nó vì nó nhận được chiều rộng từ phần không đệ quy của CTE (chính là chiều dài của ids
tức là 2 ký tự). Bạn có thể giải quyết vấn đề đó bằng CAST
đến chiều rộng đủ lớn để phù hợp với tất cả các kết quả, ví dụ:
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
Cập nhật bản trình diễn của bạn