sql >> Database >  >> RDS >> PostgreSQL

Postgresql extract laatste rij voor elke id

De meest efficiënte manier is om Postgres' distinct on . te gebruiken telefoniste

select distinct on (id) id, date, another_info
from the_table
order by id, date desc;

Als u een oplossing wilt die over databases heen werkt (maar minder efficiënt is), kunt u een vensterfunctie gebruiken:

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;

De oplossing met een vensterfunctie is in de meeste gevallen sneller dan het gebruik van een subquery.



  1. MINUTE() Voorbeelden – MySQL

  2. Mountain Lion Postgres kon geen verbinding maken

  3. Hoe ListView vullen met db in de activamap?

  4. Is er een versiebeheersysteem voor wijzigingen in de databasestructuur?