繁体   English   中英

MySQL收件箱中每位用户只有一条消息(最新消息)

[英]MySQL only one message (the latest) per user in my inbox

请帮助我,我想在收件箱中仅为每个用户显示一条消息(最新消息)。 因此,如果我要与user1user2user3交换消息,而不是像这样在收件箱中显示所有消息:

user2 - message 6
user3 - message 5
user2 - message 4
user1 - message 3
user1 - message 2
user1 - message 1

我只需要在收件箱中显示来自每个这样的最新消息。

user2 - message 6
user3 - message 5
user1 - message 3

这是我的桌子。

+-----------------------------------------------------------------------------------+
|                                      messages                                     |
+-----------------------------------------------------------------------------------+
| message_ID | sender |receiver| date | subject | body | unread | delete1 | delete2 |
+-----------------------------------------------------------------------------------+

+---------------------+
|        members      |
+---------------------+
| id | username | ... 
+----+----------+-----+

到目前为止,这是我的查询。

SELECT p.*, p.sender as sender, m.*
FROM  messages p
LEFT JOIN members m ON p.sender=m.member_id
WHERE p.receiver='<CURRENT_USER>' AND delete2=0
GROUP BY p.sender ORDER BY p.date DESC
LIMIT 5
    SELECT p.*, p.sender as sender, m.*
      FROM `messages` p
INNER JOIN (SELECT sender, 
                   MAX(message_ID) as last_message_id
              FROM `messages` 
             WHERE receiver='<CURRENT_USER>' AND delete2=0
          GROUP BY `sender`) t2 ON t2.sender = p.sender 
                               AND t2.last_message_id = p.message_ID
 LEFT JOIN members m ON p.sender = m.member_id
     WHERE receiver='<CURRENT_USER>' AND delete2=0
  ORDER BY p.date DESC
     LIMIT 5

你可以通过不同的功能来获得它

 select  MAX(message_id)   

编辑。

尝试这个

 SELECT p.*, p.sender as sender, m.*
 FROM  messages p
 inner join (select max(message_ID) lates from messages)as max on
 max.lates = p.message_ID
 LEFT JOIN members m ON p.sender=m.member_id
 WHERE p.receiver='<CURRENT_USER>' AND delete2=0
 GROUP BY p.sender ORDER BY p.date DESC
 LIMIT 5

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM