Algunas marcas de bases de datos (p. ej., Oracle, Microsoft SQL Server) admiten sintaxis SQL adicional para ejecutar "consultas recursivas", pero MySQL no admite ninguna solución de ese tipo.
El problema que está describiendo es el mismo que representar una estructura de árbol en una base de datos SQL. Solo tienes un árbol largo y delgado.
Existen varias soluciones para almacenar y obtener este tipo de estructura de datos de un RDBMS. Vea algunas de las siguientes preguntas:
- "¿Cuál es la forma más eficiente/elegante de convertir una mesa plana en un árbol? "
- "¿Es posible hacer una consulta SQL recursiva? "
Dado que menciona que le gustaría limitar la "profundidad" devuelta por la consulta, puede lograrlo consultando la lista de esta manera:
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);
Funcionará como la melaza y el resultado aparecerá en una sola fila (por lista vinculada), pero obtendrá el resultado.