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

Trier d'abord par valeur de champ spécifique

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.