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
DDDoriginal
2024-12-17 14:59:10396parcourir

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;

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;

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