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!