Maison >base de données >tutoriel mysql >Comment puis-je trier les résultats SQL pour qu'ils correspondent à l'ordre des valeurs dans une liste IN ?

Comment puis-je trier les résultats SQL pour qu'ils correspondent à l'ordre des valeurs dans une liste IN ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-19 11:11:10425parcourir

How Can I Order SQL Results to Match the Order of Values in an IN List?

Organisez les résultats dans l'ordre de la liste IN

En SQL, un scénario courant consiste à utiliser l'opérateur IN pour récupérer des données en fonction d'un ensemble de valeurs spécifié. Dans ce cas, vous souhaiterez peut-être classer les résultats dans l’ordre de la liste IN.

Dans les versions de PostgreSQL antérieures à 8.4, une façon de réaliser ce tri consistait à utiliser une sous-requête corrélée. Cependant, pour la version 8.2 et supérieure, une approche plus efficace est disponible :

Fonction VALEURS

PostgreSQL a introduit la fonction VALUES dans la version 8.2, qui permet la création de tables en mémoire. Cette fonction peut être utilisée pour construire une table temporaire contenant l'ordre des valeurs souhaité :

<code class="language-sql">select c.*
from comments c
join (
  values
    (1,1),
    (3,2),
    (2,3),
    (4,4)
) as x (id, ordering) on c.id = x.id
order by x.ordering</code>

Dans cette requête :

  • La fonction VALUES crée une table temporaire nommée "x" qui contient deux colonnes : "id" et "ordering".
  • La colonne "id" contient la valeur spécifiée dans la clause IN.
  • La colonne « Ordre » attribue un ordre numérique à chaque valeur, garantissant ainsi la disposition souhaitée des résultats.
  • La table temporaire "x" est jointe à la table "comments" basée sur la colonne "id" commune.
  • Enfin, les résultats sont triés par colonne « ordre », générant l'ordre des commentaires souhaité.

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