以前の解決策はどれも私にはうまくいきませんでした。どちらも、親が特定の順序でデータベースに保存されている場合にのみ機能します。
クエリがどのように機能するかを完全には理解していないことを認めなければなりませんが、自分に合った方法を見つけることができます(少なくとも他の回答よりも優れています)。
1番目と2番目のクエリが機能しないデータは次のとおりです。
idFolder , FolderName , idFolderParent
1 ADoc Null
2 ADoc1 7
3 ADoc2 2
4 ADoc3 3
5 ADoc4 Null
6 ADoc5 5
7 ADoc6 5
このデータセットで最初と2番目のクエリを使用する場合、ID 5の場合、結果として「6,7」のみが取得されます。しかし、私のクエリを使用すると、期待される結果である「6,7,2,3,4」が得られます。
私のバージョン:
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;
それが誰かを助けることを願っています。評判が悪いため、他の回答にコメントしたり、反対票を投じたりすることはできません:(