Mysql
 sql >> Base de données >  >> RDS >> Mysql

Ordre imbriqué SQL par ?

Quelque chose comme ça pourrait peut-être fonctionner :

SELECT *
FROM categories
ORDER BY IF(parent_id, parent_id, category_id), parent_id, display_order

mais comme il ne peut pas utiliser d'index, ce sera lent. (N'a pas testé cependant, peut-être tort)

Le premier ORDER BY la condition trie les parents et les enfants ensemble; puis le second assure que le parent précède ses enfants; le troisième trie les enfants entre eux.

De plus, cela ne fonctionnera évidemment que dans le cas que vous avez directement décrit, où vous avez une hiérarchie à deux niveaux.