假设我有一个这样的表消息:
id sender receiver content created_at
1 100 101 Hi 2015-12-01
2 100 101 Hello 2015-12-02
3 100 101 World 2015-11-02
4 103 101 Like 2015-11-05
5 103 101 Do 2015-11-04
6 105 102 ..................
指定了接收方后,我想从每个用户(即用户101)获取最新消息和消息数:
2 100 101 Hello 2015-12-02 3
4 103 101 Like 2015-11-05 2
是否可以通过一个语句来完成此操作,或者最优雅的方法是什么?
最佳答案
在子查询中汇总101
的信息,然后将其重新连接到原始表:
select m.*, mm.maxca
from messages m join
(select m2.receiver, max(m2.created_at) as maxca, count(*) as cnt
from messages m2
where m2.receiver = 101
) mm
on m.receiver = mm.receiver and m.created_at = mm.created_at
where m.receiver = 101 ;
关于mysql - Mysql:获取具有按字段分组的最大值的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34087392/