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
.