获取每个组的最新记录以及MySQL中的组行数

时间:2018-07-06 08:15:09

标签: mysql group-by count

我有一张这样的桌子:

id | column_a | column_value
1  | x        | 5 
2  | y        | 7
3  | z        | 4,7
4  | x        | 3,6
5  | y        | 2
6  | w        | 5,8,9,11

我想从每个组的最新记录中获取column_value,并从组中获取行数。

所以结果应该是这样:

count(id) | column_value
2         | 3,6
2         | 2
1         | 4,7
1         | 5,8,9,11

我试图通过以下两条路径来实现这一目标:

select count(id), column_value 
from table 
group by column_a

此版本从小组中检索了第一条记录,所以对我来说不太好。

select count(id), column_value 
from table 
where id in (select max(id) 
             from table 
             group by column_a)

此版本也有问题,因为如果没有分组依据,计数将无法正常工作。

我不知道该如何结合两个版本的优点。 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

尝试一下

Select cnt, column_value
from tst t inner join (
Select  column_a, count(id) cnt, max(id) as max_id
from tst
group by column_a ) x on (t.column_a= x.column_a and t.id = x.max_id)
order by cnt desc