MySQL stöder inte rekursiva frågor, så om ett barn kan få barn finns det inget sätt att formulera en sådan fråga. Annars bör denna fråga returnera raderna i den ordning som du behöver:
SELECT * FROM tablename
ORDER BY
CASE WHEN parent_id=0 THEN id ELSE parent_id END,
id
Se fiolen här
. Tricket är att sortera rader efter id
om det är en förälder eller av parent_id
om det är ett barn, och sedan med id
.