当前位置: 首页 > 面试题库 >

如何使用GROUP BY获取每个组中的最新记录?[重复]

王凌
2023-03-14
问题内容

这个问题已经在这里有了答案

SQL只选择列上具有最大值的行[重复] (27个答案)

去年关闭。

假设我有一个messages带有列的表:

id | from_id | to_id | subject | message | timestamp

我只想从每个用户那里获取最新消息,就像您在深入实际线程之前在FaceBook收件箱中看到的那样。

此查询似乎使我接近所需的结果:

SELECT * FROM messages GROUP BY from_id

但是查询给我的是来自每个用户的最旧消息,而不是最新消息。

我不知道这一点。


问题答案:

您应该找出timestamp每个组(子查询)中的最后一个值,然后将此子查询加入到表中-

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并不是很容易找到我。我有两个表,一个表和一个表。 贷款支付表: ID(主键),LoanID(与贷款表上的ID匹配),PaymentDate,Amount等。 我需要一条sql语句,该语句可以给我每个月输入的最后一笔付款(如果有的话)。我目前的说法没有给我结果。还存在一个问题,有时在该月的最大日期有时会有平局,因此我也必须能够处理该问题(我的想法是在平局的情况下选择最大的

  • 问题内容: 我有一个类似于 我想获取每个“ deviceId”的最新“数据”(使用message.ts作为时间戳)。 到目前为止,我已经设法使用查询按时间戳记的顺序取回了数据, 但是我不知道如何删除重复的设备记录。 这可以在CosmosDB SQL引擎内完成吗? 问题答案: 感谢Mark Brown的评论,我发现以下内容似乎是此问题的正确解决方案。不仅仅只是一次性使用一些SQL那样优雅,但这确实是

  • 我正在努力处理mongo查询。我需要在单个查询中查找文档集合。集合应包含每个用户在单个查询中使用的最新日期(字段创建日期)的文档。 在斯波克有一个测试案例来演示我想要实现的目标: 我发现不同的方法是<代码>2.1.0的一部分。M1版本,因此尚未提供。 我也在尝试注释,但留档(下面的链接)没有指定如何创建像我这样的查询。 https://docs.spring.io/spring-data/data

  • 问题内容: 怎么做? 该问题的原标题是“ 在带有子查询的复杂查询中使用等级(@Rank:= @Rank + 1)-可以吗? ”,因为我一直在寻找使用等级的解决方案,但是现在我看到Bill所发布的解决方案是好多了。 原始问题: 我正在尝试组成一个查询,该查询将从给定定义顺序的每个组中获取最后一条记录: 表达式通常用于等级,但对我来说,在2个子查询中使用时,它看起来可疑,但仅初始化一次。这样行吗? 其

  • 问题内容: 我想获得表中每个记录的最小日期,该记录具有一个主键的多个日期条目。看看我的桌子: 我想要这样的结果: 我想获取每个CaseNo的最短日期记录在我的桌子上。 我尝试了这段代码: 结果是这样的: 该代码删除没有最小日期的行。我想显示所有记录的最小日期为Min_date。 问题答案: 试试这个

  • 我有一个包含4列的Athena表,我想查找: null