Anda dapat menggunakan fungsi analitik
SELECT *
FROM (SELECT c.*,
rank() over (partition by user_id order by ts desc) rnk
FROM comments c)
WHERE rnk = 1
Bergantung pada bagaimana Anda ingin menangani ikatan (jika bisa ada dua baris dengan user_id
yang sama dan ts
), Anda mungkin ingin menggunakan row_number
atau dense_rank
fungsi daripada rank
. rank
akan memungkinkan beberapa baris menjadi yang pertama jika ada seri. row_number
akan secara sewenang-wenang mengembalikan satu baris jika ada seri. dense_rank
akan berperilaku seperti rank
untuk baris yang pertama diikat tetapi akan menganggap baris berikutnya sebagai yang kedua daripada ketiga dengan asumsi dua baris terikat untuk yang pertama.