Trier les résultats par liste de valeurs IN dans PostgreSQL
Dans PostgreSQL, la clause ORDER BY
agit généralement sur les colonnes d'une table. Cependant, il peut également être utilisé pour imposer un classement basé sur des références externes (telles que les clauses IN).
Pour garantir que les résultats de la requête correspondent à l'ordre de la liste des valeurs IN, vous pouvez utiliser la construction VALUES()
introduite dans PostgreSQL 8.2.
Solution :
Créez une table temporaire ou une expression de table commune (CTE) pour mapper les valeurs IN à l'ordre de tri souhaité :
<code class="language-sql">WITH Ordering AS ( VALUES (1,1), (3,2), (2,3), (4,4) )</code>
Joignez la table principale à cette table temporaire et alias-la en x :
<code class="language-sql">SELECT c.* FROM comments c JOIN Ordering x ON c.id = x.id ORDER BY x.ordering</code>
En référençant la colonne ORDER BY
dans la table temporaire dans la clause ordering
, les résultats seront triés dans l'ordre spécifié dans la clause IN.
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!