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 vous souciez uniquement du fait que "core" est le premier et que les autres valeurs n'ont pas d'importance :
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC
Si vous souhaitez d'abord trier par "noyau", puis 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 mises en garde :
Tout d'abord, je suis presque sûr qu'il s'agit d'une fonctionnalité mysql uniquement - la question est étiquetée mysql, mais on ne sait jamais.
Deuxièmement, faites attention à la façon dont FIELD()
fonctionne :il renvoie l'index de base un de la valeur - dans le cas de FIELD(priority, "core")
, il renverra 1 si "core" est la valeur. Si la valeur du champ n'est pas dans la liste, elle renvoie zéro . C'est pourquoi DESC
est nécessaire sauf si vous spécifiez toutes les valeurs possibles.