DISTINCT ON
अगर आप DISTINCT चालू
, उसके लिए आपको एक सबक्वेरी चाहिए:
SELECT *
FROM (
SELECT DISTINCT ON (conversation_id) *
FROM message t
ORDER BY conversation_id, created_at DESC
) sub
ORDER BY created_at DESC;
सबक्वेरी में ऑर्डर DISTINCT ON
. के कॉलम से सहमत होना चाहिए खंड, इसलिए आपको अपने वांछित क्रम पर पहुंचने के लिए इसे बाहरी क्वेरी में लपेटना होगा।
row_number()
के साथ वैकल्पिक
इसी तरह की कहानी, आपको एक सबक्वेरी भी चाहिए:
SELECT id, sender_id, receiver_id, conversation_id, subject, body, created_at
FROM (
SELECT *, row_number() OVER (PARTITION BY conversation_id
ORDER BY created_at DESC) AS rn
FROM message t
) sub
WHERE rn = 1
ORDER BY created_at DESC;
शायद धीमी भी।