このようなものがうまくいくかもしれません:
SELECT *
FROM categories
ORDER BY IF(parent_id, parent_id, category_id), parent_id, display_order
ただし、インデックスを使用できないため、遅くなります。 (ただし、テストはしていませんが、間違っている可能性があります)
最初のORDER BY
条件は、親と子を一緒にソートします。次に、2つ目は、親が子の前にあることを確認します。 3番目は子供たちを自分たちの間で分類します。
また、2レベルの階層がある、直接説明した場合にのみ機能することは明らかです。