Bạn có thể sử dụng các hàm phân tích
SELECT *
FROM (SELECT c.*,
rank() over (partition by user_id order by ts desc) rnk
FROM comments c)
WHERE rnk = 1
Tùy thuộc vào cách bạn muốn xử lý các mối quan hệ (nếu có thể có hai hàng có cùng user_id
và ts
), bạn có thể muốn sử dụng row_number
hoặc dense_rank
chức năng hơn là rank
. rank
sẽ cho phép nhiều hàng đứng đầu tiên nếu có sự ràng buộc. row_number
sẽ tự ý trả về một hàng nếu có sự ràng buộc. dense_rank
sẽ hoạt động giống như rank
cho các hàng buộc đầu tiên nhưng sẽ coi hàng tiếp theo là hàng thứ hai thay vì hàng thứ ba giả sử hai hàng buộc đầu tiên.