Trong PostgreSQL, để lấy các hàng duy nhất cho một tập hợp các cột đã xác định , kỹ thuật thích hợp thường là DISTINCT ON
:
SELECT DISTINCT ON ("ID") *
FROM "Course"
ORDER BY "ID", "Course Date" DESC NULLS LAST, "Course Name";
Bạn nhận được chính xác một hàng mỗi ID
theo cách này - cách có "Course Date"
mới nhất được biết đến và "Course Name"
đầu tiên (theo thứ tự sắp xếp) trong trường hợp ràng buộc vào ngày.
Bạn có thể thả NULLS LAST
nếu cột của bạn được xác định NOT NULL
.
Để nhận các hàng duy nhất trên mỗi ("ID", "Course Name")
:
SELECT DISTINCT ON ("ID", "Course Name") *
FROM "Course"
ORDER BY "ID", "Course Name", "Course Date" DESC NULLS LAST;
Chi tiết trong câu trả lời liên quan này: