आप विश्लेषणात्मक कार्यों का उपयोग कर सकते हैं
SELECT *
FROM (SELECT c.*,
rank() over (partition by user_id order by ts desc) rnk
FROM comments c)
WHERE rnk = 1
इस पर निर्भर करते हुए कि आप संबंधों को कैसे संभालना चाहते हैं (यदि समान user_id
के साथ दो पंक्तियाँ हो सकती हैं और ts
), आप row_number
. का उपयोग करना चाह सकते हैं या dense_rank
rank
के बजाय कार्य करें . rank
टाई होने पर कई पंक्तियों को पहले होने देगा। row_number
टाई होने पर मनमाने ढंग से एक पंक्ति लौटाएगा। dense_rank
rank
like जैसा व्यवहार करेगा उन पंक्तियों के लिए जो पहले के लिए बंधी हैं, लेकिन अगली पंक्ति को तीसरी के बजाय दूसरी मानती हैं, यह मानते हुए कि दो पंक्तियाँ पहले के लिए टाई करती हैं।