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

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

Mary-Kate Olsen
Libérer: 2025-01-01 09:06:11
original
190 Les gens l'ont consulté

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

Récupération de la dernière ligne pour chaque ID dans PostgreSQL

Lorsque vous travaillez avec des données, il est souvent nécessaire d'extraire des informations spécifiques de divers ensembles de données. Dans le cas de PostgreSQL, les utilisateurs peuvent rencontrer des scénarios dans lesquels ils doivent obtenir le dernier enregistrement pour chaque ID unique.

Scénario

Considérez le tableau suivant :

id date another_info
1 2014-02-01 kjkj
1 2014-03-11 ajskj
1 2014-05-13 kgfd
2 2014-02-01 SADA
3 2014-02-01 sfdg
3 2014-06-12 fdsA

Objectif

Le but est d'extraire la dernière ligne de données pour chaque identifiant unique dans un nouveau tableau :

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

Solution 1 : Utiliser l'opérateur DISTINCT ON de Postgres

L'opérateur DISTINCT ON de Postgres gère efficacement ce scénario :

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

Solution 2 : Utiliser un Fonction de fenêtre

Pour une compatibilité entre bases de données, les fonctions de fenêtre comme row_number() peuvent être utilisé :

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

Les benchmarks indiquent généralement que l'approche de la fonction de fenêtre est plus rapide que les sous-requêtes.

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