MySQL ne prend pas en charge les requêtes récursives, donc si un enfant peut avoir des enfants, il n'y a aucun moyen de formuler une telle requête. Sinon, cette requête devrait renvoyer les lignes dans l'ordre dont vous avez besoin :
SELECT * FROM tablename
ORDER BY
CASE WHEN parent_id=0 THEN id ELSE parent_id END,
id
Veuillez consulter le violon ici
. L'astuce consiste à ordonner les lignes par id
si c'est un parent ou par parent_id
si c'est un enfant, puis par id
.