Maison >base de données >tutoriel mysql >Comment hiérarchiser les valeurs de champs spécifiques lors de la commande des résultats de la base de données dans MySQL ?

Comment hiérarchiser les valeurs de champs spécifiques lors de la commande des résultats de la base de données dans MySQL ?

DDD
DDDoriginal
2025-01-14 09:00:41611parcourir

How to Prioritize Specific Field Values When Ordering Database Results in MySQL?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn