使用 GROUP BY 检索每组的最新记录
在此上下文中,您有一个名为“messages”的表,其中包含“列” id”、“from_id”、“to_id”、“主题”、“消息”和“时间戳”。您的目标是从每个用户中提取最新消息,类似于 Facebook 收件箱中的显示。
提供的查询“SELECT * FROM messages GROUP BY from_id”会生成每个用户最旧的消息最新的。要纠正此问题,需要采用替代方法。
要获取最新消息,您需要确定每个用户的最大时间戳,并将此信息与“消息”表连接起来。下面的查询完成此操作:
SELECT t1.* FROM messages t1 JOIN (SELECT from_id, MAX(timestamp) timestamp FROM messages GROUP BY from_id) t2 ON t1.from_id = t2.from_id AND t1.timestamp = t2.timestamp;
此查询执行以下操作:
结果是一个仅包含每个用户的最新消息的表,提供所需的功能。
以上是如何检索数据库中每个用户的最新消息?的详细内容。更多信息请关注PHP中文网其他相关文章!