Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

पंक्तियों की गिनती अलग-अलग होती है

मैं थोड़ा भ्रमित हूँ, क्योंकि आपका तर्क जल्द से जल्द . लाने के लिए प्रतीत होगा संदेश नवीनतम नहीं।

हालांकि distinct on काफी शक्तिशाली है, मुझे यकीन नहीं है कि आप जो चाहते हैं उसे आसानी से प्राप्त कर सकते हैं। मेरा झुकाव विंडो फ़ंक्शंस का उपयोग करने के लिए स्विच करना है:

SELECT m.*
FROM (SELECT m.*,
             (CASE WHEN sender_id < recipient_id
                   THEN (sender_id, recipient_id)
                   ELSE (recipient_id, sender_id)
              END) AS pair,
             ROW_NUMBER() OVER (PARTITION BY (CASE WHEN sender_id < recipient_id
                                                   THEN (sender_id, recipient_id)
                                                   ELSE (recipient_id, sender_id)
                                              END)
                                ORDER BY created_at, unread_count DESC
                               ) as seqnum,
             SUM(CASE WHEN m.opened = false THEN 0 ELSE 1 END) OVER
                 (PARTITION BY (CASE WHEN sender_id < recipient_id
                                     THEN (sender_id, recipient_id)
                                     ELSE (recipient_id, sender_id)
                                END)
                 ) as NumUnopened
      FROM "messages" m
      WHERE ((recipient_id = 6 and recipient_delete = false) or 
             (sender_id = 6 and sender_delete = false))  
     ) t
WHERE seqnum = 1;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल क्वेरी के लिए तैयार बयान में एक चर का उपयोग कैसे करें?

  2. संग्रहीत प्रक्रिया के माध्यम से गतिशील नामों के साथ तालिकाएँ बनाएँ

  3. MySQL में विदेशी कुंजी की मूल बातें?

  4. SQL क्वेरी संबंध के भीतर किसी अन्य विशेषता के मूल्यों के आधार पर कई टुपल्स में एक विशेषता की तुलना करती है

  5. उन पंक्तियों का चयन करें जहां पिवट में सभी आईडी हैं