Il y a aussi le MySQL FIELD
fonction .
Si vous voulez un tri complet pour toutes les valeurs possibles :
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core", "board", "other")
Si vous ne vous souciez que du "noyau dur" et que les autres valeurs n'ont pas d'importance :
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC
Si vous voulez trier d'abord par "core", et les autres champs dans l'ordre de tri normal :
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC, priority
Il y a cependant quelques réserves à faire :
Tout d'abord, je suis presque sûr que cette fonctionnalité est réservée à mysql - la question est étiquetée mysql, mais on ne sait jamais.
Deuxièmement, faites attention à la façon dont FIELD()
fonctionne : il renvoie le indice unique de la valeur - dans le cas de FIELD(priority, "core")
il retournera 1 si la valeur est "core". Si la valeur du champ n'est pas dans la liste, il retourne zéro . C'est pourquoi DESC
est nécessaire, sauf si vous spécifiez toutes les valeurs possibles.