gpt4 book ai didi

mysql - 从对话中选择最后一条消息(两个用户之间的一条消息)

转载 作者:行者123 更新时间:2023-11-30 21:42:32 25 4
gpt4 key购买 nike

我有一个简单的聊天应用程序,我需要在其中获取两个用户(user1 是您)之间每次对话的最后一条消息

这是我的 table

| 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

关于mysql - 从对话中选择最后一条消息(两个用户之间的一条消息),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50925477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com