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

Mysql में दो उपयोगकर्ता के संचार के बीच नवीनतम संदेश का चयन करें

SELECT data.* FROM 
(SELECT MAX(sendtime) AS sendtime 
         FROM data 
         WHERE 1 IN (sender,receiver)
         GROUP BY IF (1 = sender,receiver,sender)) AS latest
LEFT JOIN data ON latest.sendtime = data.sendtime AND 1 IN (data.sender, data.receiver)
GROUP BY IF (1 = data.sender,data.receiver,data.sender)

मैं बाहरी GROUP BY . से बचने के लिए आपकी तालिका में अद्वितीय अनुक्रम आईडी का उपयोग करने की अनुशंसा करता हूं .अगर आपके पास इंक्रीमेंटिंग यूनिक message_id है (यानी बड़ा message_id बाद में sendtime . से मेल खाती है ), क्वेरी बहुत आसान होगी:

SELECT data.* FROM 
(SELECT MAX(message_id) AS message_id 
         FROM data 
         WHERE 1 IN (sender,receiver)
         GROUP BY IF (1 = sender,receiver,sender)) AS latest
LEFT JOIN data USING(message_id)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में डेटाटाइम कॉलम से वर्ष कैसे प्राप्त करें

  2. MySQL अपडेट इंक्रीमेंटेड (ऑटो-इन्क्रिमेंटेड नहीं) कॉलम मान

  3. अल्पविराम से अलग किए गए विभाग आईडी को क्रमशः उनके नाम से कैसे बदलें?

  4. टेक्स्ट फ़ील्ड के शब्द गणना आँकड़े निर्धारित करने के लिए SQL का उपयोग करना

  5. डॉकर-लिखें जांचें कि क्या MySQL कनेक्शन तैयार है