Một số thương hiệu cơ sở dữ liệu (ví dụ:Oracle, Microsoft SQL Server) hỗ trợ cú pháp SQL bổ sung để chạy "truy vấn đệ quy" nhưng MySQL không hỗ trợ bất kỳ giải pháp nào như vậy.
Vấn đề bạn đang mô tả cũng giống như biểu diễn cấu trúc cây trong cơ sở dữ liệu SQL. Bạn chỉ có một cái cây dài và gầy.
Có một số giải pháp để lưu trữ và tìm nạp loại cấu trúc dữ liệu này từ RDBMS. Xem một số câu hỏi sau:
- " Cách hiệu quả / thanh lịch nhất để phân tích một bảng phẳng thành một cái cây là gì? "
- " Có được không để thực hiện một truy vấn SQL đệ quy? "
Vì bạn đề cập rằng bạn muốn giới hạn "độ sâu" mà truy vấn trả về, bạn có thể đạt được điều này khi truy vấn danh sách theo cách này:
SELECT * FROM mytable t1
LEFT JOIN mytable t2 ON (t1.next_id = t2.id)
LEFT JOIN mytable t3 ON (t2.next_id = t3.id)
LEFT JOIN mytable t4 ON (t3.next_id = t4.id)
LEFT JOIN mytable t5 ON (t4.next_id = t5.id)
LEFT JOIN mytable t6 ON (t5.next_id = t6.id)
LEFT JOIN mytable t7 ON (t6.next_id = t7.id)
LEFT JOIN mytable t8 ON (t7.next_id = t8.id)
LEFT JOIN mytable t9 ON (t8.next_id = t9.id)
LEFT JOIN mytable t10 ON (t9.next_id = t10.id);
Nó sẽ hoạt động giống như mật đường và kết quả sẽ trở lại tất cả trên một hàng (mỗi danh sách được liên kết), nhưng bạn sẽ nhận được kết quả.