Maison > base de données > tutoriel mysql > PostgreSQL prend-il en charge la fonctionnalité « TOP n WITH TIES » ?

PostgreSQL prend-il en charge la fonctionnalité « TOP n WITH TIES » ?

Patricia Arquette
Libérer: 2024-12-29 22:22:23
original
512 Les gens l'ont consulté

Does PostgreSQL Support `TOP n WITH TIES` Functionality?

LIMIT avec Ties : PostgreSQL l'a-t-il implémenté ?

Dans SQL Server, la syntaxe TOP n WITH TIES récupère les n premières lignes ainsi que toutes les lignes liées. Cependant, les utilisateurs de PostgreSQL se demandent peut-être s'il existe une syntaxe équivalente.

Solution de PostgreSQL : WITH TIES (PostgreSQL 13)

À partir de PostgreSQL 13, la clause WITH TIES était introduit. Cette clause se comporte de la même manière que son homologue SQL Server, récupérant les n premières lignes ainsi que toutes les lignes liées.

Alternative pour PostgreSQL 12 et versions antérieures

Avant PostgreSQL 13, il n'avait pas d'équivalent direct de TOP n WITH TIES. Une solution de contournement consiste à exécuter la requête suivante :

WITH cte AS (
   SELECT *, rank() OVER (ORDER BY <something>) AS rnk
   FROM   tbl
   )
SELECT *
FROM   cte
WHERE  rnk <= n;
Copier après la connexion

Ici, Rank() attribue à chaque ligne un rang et les lignes à égalité pour le dernier rang n sont incluses.

Exemple

Considérons un tableau Nombres avec les valeurs {10, 9, 8, 8, 2}. La requête suivante renverrait {10, 9, 8, 8} en utilisant la méthode alternative pour PostgreSQL 12 et versions antérieures :

WITH cte AS (
   SELECT nums, rank() OVER (ORDER BY nums DESC) AS rnk
   FROM   Numbers
   )
SELECT *
FROM   cte
WHERE  rnk <= 3;
Copier après la connexion

Remarque : La fonction Rank() utilisée dans cette alternative est différent de dense_rank(), car cette dernière produirait des résultats incorrects en renvoyant trop de lignes.

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