Một cái gì đó như thế này có thể hoạt động:
SELECT *
FROM categories
ORDER BY IF(parent_id, parent_id, category_id), parent_id, display_order
nhưng vì nó không thể sử dụng một chỉ mục, nó sẽ chậm. (Tuy nhiên, không kiểm tra, có thể sai)
ORDER BY
đầu tiên điều kiện sắp xếp cha mẹ và con cái với nhau; sau đó cái thứ hai đảm bảo cha mẹ đứng trước con cái của nó; thứ ba sắp xếp các con với nhau.
Ngoài ra, nó rõ ràng sẽ chỉ hoạt động trong trường hợp bạn đã trực tiếp mô tả, nơi bạn có hệ thống phân cấp hai cấp.