No PostgreSQL, para obter linhas exclusivas para um conjunto definido de colunas , a técnica preferencial geralmente é
DISTINCT ON
:SELECT DISTINCT ON ("ID") *
FROM "Course"
ORDER BY "ID", "Course Date" DESC NULLS LAST, "Course Name";
Você obtém exatamente uma linha por
ID
desta forma - aquele com a "Course Date"
mais recente conhecida e o primeiro "Course Name"
(de acordo com a ordem de classificação) em caso de empate na data. Você pode soltar
NULLS LAST
se sua coluna estiver definida NOT NULL
. Para obter linhas exclusivas por
("ID", "Course Name")
:SELECT DISTINCT ON ("ID", "Course Name") *
FROM "Course"
ORDER BY "ID", "Course Name", "Course Date" DESC NULLS LAST;
Detalhes nesta resposta relacionada: