web-dev-qa-db-fra.com

Commandez en utilisant des priorités personnalisées pour les colonnes de texte

Ceci est un exemple de table:

name | cat
----------
hugo | sal
bob  | mgr
mike | dev
jeff | mgr
john | dev

Les deux name et cat étant Varchar.

cat reflète une catégorie de ces noms, mais j'aime leur attribuer une priorité, suivie d'une requête pour les énumérer tous, commandé par cette priorité.

Quelles voies sont possibles? Je pourrais extraire cat dans une deuxième table, construire une clé étrangère, etc. Mais étant donné que mon application est très simple et que la structure peut être non modifiable: quelles possibilités dois-je énumérer le mgr Les noms d'abord, suivis des noms dev, suivi des noms sal?

12
Sebastian Roth

En supposant que vous ne puissiez pas changer votre structure, vous pouvez utiliser une instruction de cas dans votre commande par:

ORDER BY case cat when 'mgr' then 1 when 'dev' then 2 else 3

Si vous -CAN changer votre structure, vous pouvez créer une table Category, y compris le code de catégorie et un classement, rejoignez votre table d'échantillonnage à la table Category. par ce classement.