В PostgreSQL, за получаване на уникални редове за определен набор от колони , предпочитаната техника обикновено е DISTINCT ON
:
SELECT DISTINCT ON ("ID") *
FROM "Course"
ORDER BY "ID", "Course Date" DESC NULLS LAST, "Course Name";
Получавате точно един ред за ID
по този начин - този с най-новата известна "Course Date"
и първото "Course Name"
(според реда на сортиране) при равенство на датата.
Можете да премахнете NULLS LAST
ако вашата колона е дефинирана NOT NULL
.
За да получите уникални редове за ("ID", "Course Name")
:
SELECT DISTINCT ON ("ID", "Course Name") *
FROM "Course"
ORDER BY "ID", "Course Name", "Course Date" DESC NULLS LAST;
Подробности в този свързан отговор: