MySQL如何匹配收发两列查询指定用户的最新聊天记录
实现方案
你要的获取指定用户最新一条聊天记录的MySQL代码如下,直接过滤双列匹配用户后排序取第一条即可:
-- 替换语句中的1为你要查询的目标用户ID,chat_records替换为你的实际表名 SELECT * FROM chat_records WHERE id_user_to = 1 OR id_user_from = 1 ORDER BY `timestamp` DESC, id DESC LIMIT 1;
逻辑说明
- WHERE条件直接匹配目标用户作为消息接收方
id_user_to或者发送方id_user_from的所有记录 - 先按时间戳
timestamp倒序排列,最新的记录排在最前;如果存在多条时间戳完全相同的记录,再按自增主键id倒序,保证取到生成时间最晚的那条 - 最后用
LIMIT 1仅返回第一条结果,就是你要的最新聊天记录
原写法问题说明
你之前的写法里子查询GROUP BY code没有匹配的业务字段支撑,也没有加上双列匹配用户的过滤条件,所以无法适配当前场景。如果是需要查询目标用户和每个好友的最新聊天记录,才需要用到分组逻辑,仅取全局最新一条用上述写法即可,性能也更高。
内容的提问来源于stack exchange,提问作者Gae
相关产品推荐
相关产品推荐

