PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Seleziona i record in base all'ultima data

In PostgreSQL, per ottenere righe univoche per un insieme definito di colonne , la tecnica preferibile è generalmente DISTINCT ON :

SELECT DISTINCT ON ("ID") *
FROM   "Course"
ORDER  BY "ID", "Course Date" DESC NULLS LAST, "Course Name";

Ottieni esattamente una riga per ID in questo modo - quello con l'ultimo "Course Date" noto e il primo "Course Name" (secondo ordinamento) in caso di parità nella data.

Puoi rilasciare NULLS LAST se la tua colonna è definita NOT NULL .

Per ottenere righe univoche per ("ID", "Course Name") :

SELECT DISTINCT ON ("ID", "Course Name") *
FROM   "Course"
ORDER  BY "ID", "Course Name", "Course Date" DESC NULLS LAST;

Dettagli in questa risposta correlata: