PostgreSQLでは、定義された列のセットに対して一意の行を取得する 、推奨される手法は通常、 DISTINCT ON
:
SELECT DISTINCT ON ("ID") *
FROM "Course"
ORDER BY "ID", "Course Date" DESC NULLS LAST, "Course Name";
正確に1行 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;
この関連する回答の詳細: