Nenhuma das soluções anteriores funcionou para mim. Ambos só funcionam se os pais forem salvos no banco de dados em uma determinada ordem.
Devo admitir que não entendo completamente como a consulta funciona, mas poderia encontrar uma maneira que funcione para mim (pelo menos melhor do que as outras respostas).
Os dados com os quais a primeira e a segunda consulta não funcionam são:
idFolder , FolderName , idFolderParent
1 ADoc Null
2 ADoc1 7
3 ADoc2 2
4 ADoc3 3
5 ADoc4 Null
6 ADoc5 5
7 ADoc6 5
Se você usar a primeira e a segunda consultas neste conjunto de dados, para o id 5 você obterá apenas como resultado '6,7'. Mas se você usar minha consulta, obterá:'6,7,2,3,4' que é o resultado esperado.
Minha versão:
SELECT GROUP_CONCAT(lv SEPARATOR ',') FROM (
SELECT @pv:=(SELECT GROUP_CONCAT(idFolder SEPARATOR ',') FROM Folder
WHERE FIND_IN_SET(idFolderParent, @pv)) AS lv FROM Folder
JOIN
(SELECT @pv:=5) tmp
) a;
Espero que ajude alguém. Não posso comentar nem votar contra as outras respostas por causa da falta de reputação :(