Maison > base de données > tutoriel mysql > Comment récupérer efficacement la dernière ligne de chaque identifiant unique dans PostgreSQL ?

Comment récupérer efficacement la dernière ligne de chaque identifiant unique dans PostgreSQL ?

DDD
Libérer: 2024-12-17 14:59:10
original
463 Les gens l'ont consulté

How to Efficiently Retrieve the Last Row for Each Unique Identifier in PostgreSQL?

Postgresql : Extraction de la dernière ligne pour chaque identifiant unique

Dans PostgreSQL, vous pouvez rencontrer des situations où vous devez extraire les informations du dernière ligne associée à chaque identifiant distinct dans un ensemble de données. Considérez les données suivantes :

  date d'identification another_info<br> 1 2014-02-01 kjkj<br> 1 2014-03-11 ajskj<br> 1 2014-05-13 kgfd<br> 2 2014-02-01 SADA<br> 3 2014-02 -01 sfdg<br> 3 2014-06-12 fdsA<br>

Pour récupérer la dernière ligne d'informations pour chaque identifiant unique de l'ensemble de données, vous pouvez utiliser l'opérateur distinct on efficace de Postgres :

select distinct on (id) id, date, another_info
from the_table
order by id, date desc;
Copier après la connexion

Cette requête renverra ce qui suit sortie :

  id date another_info<br>1 2014-05-13 kgfd<br>2 2014-02-01 SADA<br>3 2014-06-12 fdsA<br>

Si vous préférez une solution inter-bases de données qui peut sacrifier légèrement les performances, vous pouvez utiliser un fonction window :

select id, date, another_info
from (
  select id, date, another_info, 
         row_number() over (partition by id order by date desc) as rn
  from the_table
) t
where rn = 1
order by id;
Copier après la connexion

Dans la plupart des cas, la solution impliquant une fonction window est plus rapide que l'utilisation d'une sous-requête.

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