Нещо подобно може да работи:
SELECT *
FROM categories
ORDER BY IF(parent_id, parent_id, category_id), parent_id, display_order
но тъй като не може да използва индекс, ще бъде бавно. (Не тествах обаче, може да не е наред)
Първият ORDER BY
състояние сортира родителите и децата заедно; тогава вторият гарантира, че родителят изпреварва своите деца; третият сортира децата помежду си.
Освен това очевидно ще работи само в случая, който директно описахте, когато имате йерархия на две нива.