【问题标题】: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也是排序的,也是最新的。

【问题讨论】:

    标签: mysql sql greatest-n-per-group


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2022-12-04
      • 1970-01-01
      • 2022-08-14
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-27
      • 1970-01-01
      相关资源
      最近更新 更多