W PostgreSQL, aby uzyskać unikalne wiersze dla określonego zestawu kolumn , preferowaną techniką jest zazwyczaj DISTINCT ON
:
SELECT DISTINCT ON ("ID") *
FROM "Course"
ORDER BY "ID", "Course Date" DESC NULLS LAST, "Course Name";
Otrzymujesz dokładnie jeden wiersz na ID w ten sposób - ten z najnowszą znaną "Course Date" i pierwszy "Course Name" (według kolejności sortowania) w przypadku remisów w dniu.
Możesz upuścić NULLS LAST jeśli twoja kolumna jest zdefiniowana NOT NULL .
Aby uzyskać unikalne wiersze na ("ID", "Course Name") :
SELECT DISTINCT ON ("ID", "Course Name") *
FROM "Course"
ORDER BY "ID", "Course Name", "Course Date" DESC NULLS LAST;
Szczegóły w tej powiązanej odpowiedzi: