MySQL non supporta le query ricorsive, quindi se un bambino può avere figli non c'è modo di formulare una query del genere. Altrimenti questa query dovrebbe restituire le righe nell'ordine di cui hai bisogno:
SELECT * FROM tablename
ORDER BY
CASE WHEN parent_id=0 THEN id ELSE parent_id END,
id
Si prega di vedere violino qui
. Il trucco è ordinare le righe per id se è un genitore o da parent_id se è un bambino, e poi da id .