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
Libérer: 2025-01-19 11:11:10
original
464 Les gens l'ont consulté

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é :

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
Copier après la connexion

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal