"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Méthodes de tri des enregistrements de base de données dans un ordre spécifique

Méthodes de tri des enregistrements de base de données dans un ordre spécifique

Publié le 2025-05-01
Parcourir:489

How to Order Database Records by Multiple Values in a Specific Sequence?

Enregistre les enregistrements de base de données de tri multi-valeurs dans un ordre spécifique

]

Supposons que vous ayez une table avec une clé d'index et un champ non index x_field . Vous devez trouver tous les enregistrements avec des valeurs spécifiques et les renvoyer et trier les résultats en fonction de plusieurs valeurs dans un ordre spécifique.

par exemple, si vous avez le tableau suivant:

id x_field a124a a b 127 f 128 &&K ] x x b p p 135 i
a
124a
]
125
126
&&]
b b
131
132
133
134
p

] ] ] et vous voulez que les résultats soient triés dans l'ordre suivant, où l'ordre est : id ] a a a a Vous avez initialement essayé en utilisant la requête suivante: SÉLECTIONNER * De la table Où je ne suis pas en (126) Ordre par x_field 'f', 'p', 'i', 'a' Cependant, cette requête ne renvoie aucun résultat.
x_field = 'f', 'p', 'i', 'a'
x_field
&&K ] 135 i
123 a
124 a
125
129
La solution à ce problème consiste à utiliser l'instruction

case

pour attribuer une valeur numérique à chaque valeur
SELECT *
FROM table
WHERE id NOT IN (126)
ORDER BY x_field 'f', 'p', 'i', 'a'

... OÙ x_field dans ('f', 'p', 'i', 'a') ... Commander Cas x_field Quand 'f' puis 1 Quand 'p' puis 2 Quand «je» puis 3 Quand «a» puis 4 Else 5 - Pour les valeurs de secours pas dans la clause in (par exemple: x_field = 'b') End, id

Cette requête attribue la valeur 1 à la valeur x_field égale à «f», valeur 2 à la valeur égale à «p», valeur 3 à la valeur égale à «i», et valeur 4 à la valeur égale à «a». Pour les valeurs non dans la clause dans

(par exemple «b»), une valeur de secours de 5 est attribuée. Triez ensuite les résultats dans l'ordre croissant en fonction de cette valeur et du champ
...
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
Cette méthode garantit que les résultats sont triés dans l'ordre souhaité, même si les valeurs

x_field ne sont pas dans l'ordre descendant / ascendant.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3