Maison > base de données > tutoriel mysql > Comment puis-je classer les résultats PostgreSQL en fonction de l'ordre des valeurs dans une clause IN ?

Comment puis-je classer les résultats PostgreSQL en fonction de l'ordre des valeurs dans une clause IN ?

Susan Sarandon
Libérer: 2025-01-19 10:51:10
original
447 Les gens l'ont consulté

How Can I Order PostgreSQL Results Based on the Order of Values in an IN Clause?

Contrôler l'ordre des lignes dans les requêtes PostgreSQL à l'aide de la clause IN

La clause IN de PostgreSQL, bien que puissante pour le filtrage, ne garantit pas intrinsèquement un ordre de lignes spécifique. Si vous devez récupérer des lignes classées selon la séquence dans votre liste IN, une solution de contournement utilisant la construction VALUES (disponible dans PostgreSQL 8.2 et versions ultérieures) fournit une solution.

Cette approche crée une sous-requête qui mappe les identifiants de votre IN liste à une commande personnalisée. La requête principale rejoint ensuite cette sous-requête pour trier les résultats. Voici comment :

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

Cette requête construit une table temporaire (x) en utilisant VALUES. Chaque ligne de x associe un identifiant de la liste IN à l'ordre souhaité (ordering). L'opération JOIN lie cette table temporaire à la table comments en fonction de la colonne id. Enfin, ORDER BY x.ordering trie les résultats selon l'ordre défini dans la construction VALUES.

Cette méthode vous permet effectivement de personnaliser l'ordre des lignes renvoyées par une requête impliquant la clause IN, offrant un contrôle précis sur la présentation des donné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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal