Maison >base de données >tutoriel mysql >Comment puis-je trier les résultats d'une requête SQL selon plusieurs valeurs dans une séquence spécifique ?
Trier plusieurs valeurs dans un ordre spécifique
En SQL, les résultats des requêtes peuvent être triés selon plusieurs valeurs, mais uniquement si ces valeurs doivent être incluses dans la clause ORDER BY. Si vous essayez de trier selon plusieurs valeurs qui ne sont pas incluses dans la clause ORDER BY (comme dans l'exemple fourni), la requête ne renverra aucun résultat.
Pour trier plusieurs valeurs dans un ordre précis, il est recommandé d'utiliser l'instruction CASE :
<code class="language-sql">... WHERE x_field IN ('f', 'p', 'i', 'a') ... ORDER BY CASE x_field WHEN 'f' THEN 1 WHEN 'p' THEN 2 WHEN 'i' THEN 3 WHEN 'a' THEN 4 ELSE 5 -- 对IN子句中未包含的值的回退。例如:x_field = 'b' END, id</code>
Dans cet exemple, l'instruction CASE attribue une priorité numérique à chaque valeur de la colonne x_field (« f » vaut 1, « p » vaut 2, et ainsi de suite). Les résultats sont ensuite triés en fonction de cette priorité puis par la colonne id pour garantir un tri unique au sein de chaque niveau de priorité.
En utilisant l'instruction CASE, vous pouvez spécifier l'ordre de tri souhaité pour plusieurs valeurs. Dans cet exemple, les résultats seront triés dans l'ordre « f », « p », « i » et « a », comme spécifié dans l'instruction CASE.
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!