Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tại sao kết hợp đệ quy này tạo ra:Dữ liệu quá dài

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




  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 thay đổi bộ mã bảng mặc định thành bộ mã cơ sở dữ liệu

  2. Hiệu suất MySQL:Cách tận dụng việc lập chỉ mục cơ sở dữ liệu MySQL

  3. làm thế nào để 'tải dữ liệu trong tệp tin' trên amazon RDS?

  4. giá trị mysql NULL ở đâu trong CLAUSE

  5. MySQL:chọn khoảng thời gian 5 phút đầy đủ cuối cùng