Ini adalah kasus penggunaan yang sempurna untuk DISTINCT ON
- ekstensi khusus Postgres dari DISTINCT
standard standar :
SELECT DISTINCT ON (category)
id -- , category, date -- any other column (expression) from the same row
FROM tbl
ORDER BY category, date DESC;
Hati-hati dengan urutan pengurutan menurun. Jika kolomnya bisa NULL, Anda mungkin ingin menambahkan NULLS LAST
:
- Urutkan menurut kolom ASC, tetapi nilai NULL terlebih dahulu?
DISTINCT ON
sederhana dan cepat. Penjelasan terperinci dalam jawaban terkait ini:
- Pilih baris pertama di setiap grup GROUP BY?
Untuk tabel besar dengan banyak baris per category
pertimbangkan pendekatan alternatif:
- Optimalkan kueri GROUP BY untuk mengambil baris terbaru per pengguna
- Optimalkan kueri maksimum berdasarkan grup