首页 > 数据库 > mysql教程 > 如何在 SQL 中检索每个用户组的最新消息?

如何在 SQL 中检索每个用户组的最新消息?

Patricia Arquette
发布: 2025-01-03 07:25:39
原创
410 人浏览过

How to Retrieve the Most Recent Message from Each User Group in SQL?

如何使用 GROUP BY 检索每个用户组的最新消息

在您的数据库中,您有一个名为“messages”的表,其中包含下列列:

  • id
  • from_id
  • to_id
  • 主题
  • 消息
  • 时间戳

你的目标是提取来自每个用户组的最新消息。例如,这类似于您在单击特定对话之前在 Facebook 收件箱中看到的消息列表。

最初,您尝试使用以下查询,该查询按 from_id 列对消息进行分组:

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;
登录后复制

此修改后的查询有效地识别每个组中的最新记录,为您提供所需的结果。

以上是如何在 SQL 中检索每个用户组的最新消息?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板