Il y a aussi la fonction MySQLFIELD
.
Si vous souhaitez 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 seulement que le "noyau" soit 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 voulez trier d'abord par "noyau", 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 mises en garde:
Tout d'abord, je suis à peu près sûr qu'il s'agit d'une fonctionnalité uniquement mysql - 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 basé sur un de la valeur - dans le cas de FIELD(priority, "core")
, il retournera 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.