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)