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: