分组并获取分组中的最新记录

Group by and get latest record in group

我有一个 table 命名的消息是这样的:

我想查询 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也是有序的,也是最新的。

我在通过以下查询发布问题后完成了此操作,但我认为这可能比其他方法花费更多...还有另一种低成本的方法吗?!

有人可以说出查询下方多重连接的计算成本吗?

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