Ако тези без родители имаха null
в техния parent
колона, вашето изявление би било много просто:
SELECT id, name, parent FROM categories order by coalesce(parent, id), id;
Ако настоявате за 0
като не представлява родител, можете да използвате по-подробно CASE WHEN ... THEN ...
изявление.
Редактиране:
-- Sorting by name instead
select a.id, a.name, a.parent
from categories a left join categories b on a.parent=b.id
order by coalesce(b.name, a.name), a.name