Tri des résultats de la base de données MySQL : prioriser les valeurs de champs spécifiques
Dans les opérations sur les tables de base de données, il est courant de prioriser les enregistrements avec des valeurs de champ spécifiques. Par exemple, considérons un tableau avec les colonnes et données suivantes :
id | name | priority |
---|---|---|
1 | core | 10 |
2 | core | 9 |
3 | other | 8 |
4 | board | 7 |
5 | board | 6 |
6 | core | 4 |
La tâche consiste à réorganiser les résultats en fonction du champ priority
, mais en donnant la priorité aux lignes où name
est égal à "core". Le résultat souhaité est le suivant :
id | name | priority |
---|---|---|
6 | core | 4 |
2 | core | 9 |
1 | core | 10 |
5 | board | 6 |
4 | board | 7 |
3 | other | 8 |
Dans MySQL, ce tri peut être réalisé à l'aide de la fonction FIELD()
. Voici quelques moyens :
Trier entièrement toutes les valeurs :
<code class="language-sql">SELECT id, name, priority FROM mytable ORDER BY FIELD(name, "core", "board", "other");</code>
Cette requête triera les résultats selon l'ordre spécifié dans la fonction FIELD()
, en donnant la priorité aux valeurs qui apparaissent en premier.
Seul le « core » sera priorisé :
<code class="language-sql">SELECT id, name, priority FROM mytable ORDER BY FIELD(name, "core") DESC;</code>
Cette requête donne la priorité aux lignes où DESC
est égal à "core" en utilisant name
, quelles que soient leurs autres valeurs de champ.
Préserve l'ordre de tri des autres valeurs :
<code class="language-sql">SELECT id, name, priority FROM mytable ORDER BY FIELD(name, "core") DESC, priority;</code>
Cette requête donne la priorité aux lignes « principales » en utilisant d'abord FIELD()
, puis trie les lignes restantes dans l'ordre priority
normal.
Il est important de noter que la fonction FIELD()
renvoie l'index de base un de la valeur correspondante, ou zéro si la valeur n'est pas trouvée. Par conséquent, DESC
doit être utilisé à moins que toutes les valeurs possibles ne soient spécifiées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!