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>
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!