[英]Select last message from conversation (one message between two users)
我有一个简单的聊天应用程序,需要获取两个用户( user1
是您)之间每次对话的最新消息
这是我的桌子
| id | sender_id | receiver_id | message | timestamp |
这是我的查询,但它返回两个用户的最后一条消息,而不是两个用户之间的最后一条消息
SELECT *
FROM (SELECT DISTINCT * FROM chat WHERE (sender_id='user_id' OR receiver_id='user_id')
ORDER BY timestamp DESC) as m GROUP BY `sender_id`
所以我只需要两个用户之间的最后一条消息,而不是两条消息
编辑
我在该表中存储了多个对话,因此我希望它从用户所在的所有对话中提取最后一条消息。因此,如果我与3个人聊天,则应该返回3条消息,每条消息都是该对话的最后一条
用这个:
SELECT chat.*
FROM chat
JOIN (
SELECT MAX(id) id
FROM chat
WHERE (sender_id='user_id' OR receiver_id='user_id')
) x ON chat.id = x.id
子查询找到与您的条件匹配的最大chat.id值(大概是最新消息)。 然后,联接筛选聊天表以仅显示该条目。
或者,甚至更简单地,您可以使用查询的变体。 但这不会那么快。
SELECT *
FROM chat
WHERE (sender_id='user_id' OR receiver_id='user_id')
ORDER BY timestamp DESC
LIMIT 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.