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: