Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Ordem aninhada SQL por?


Algo assim talvez funcione:
SELECT *
FROM categories
ORDER BY IF(parent_id, parent_id, category_id), parent_id, display_order

mas como não pode usar um índice, será lento. (Não testei, pode estar errado)

O primeiro ORDER BY a condição une pais e filhos; então o segundo garante que o pai precede seus filhos; o terceiro classifica as crianças entre si.

Além disso, obviamente funcionará apenas no caso que você descreveu diretamente, onde você tem uma hierarquia de dois níveis.