分组并获取组中的最新记录[重复]
Posted
技术标签:
【中文标题】分组并获取组中的最新记录[重复]【英文标题】:Group by and get latest record in group [duplicate] 【发布时间】:2021-09-20 12:31:39 【问题描述】:我有一个名为 messages 的表,如下所示:
我想查询reciever_id 等于1 的位置并按sender_id 分组并获取最新记录。
我使用了查询:
SELECT `t`.* FROM(
SELECT * FROM messages
WHERE reciever_id = 1
ORDER BY created_at DESC
) `t`
GROUP BY `sender_id`
ORDER BY `id`
还有:
SELECT message, MAX(created_at)
FROM messages
WHERE reciever_id = 1
GROUP BY sender_id
ORDER BY created_at
图中的日期列created_at正好是最新的,id也是排序的,也是最新的。
【问题讨论】:
【参考方案1】:我是在通过以下查询发布问题后完成的,但我认为这可能比其他人花费更多......还有另一种低成本的方法吗?!
有人可以说公式下面查询的多个连接的成本是多少吗?
SELECT id,sender_id,reciever_id,seen,message,created_at
FROM messages
WHERE id IN (
SELECT MAX(id)
FROM messages
WHERE reciever_id = 1
GROUP BY sender_id
ORDER BY id desc
) ORDER BY created_at DESC
【讨论】:
以上是关于分组并获取组中的最新记录[重复]的主要内容,如果未能解决你的问题,请参考以下文章
具有最新记录的 Oracle 查询 GROUP BY [重复]