Mysql组按顺序排序后?

时间:2016-05-29 05:18:56

标签: mysql group-by sql-order-by

这样的问题很少,但它们并不是以一种简单的方式构建的,这使得答案可以用于更通用的案例。这些问题是针对具体案例而制定的。

假设我们有一张表

id  letter
----------
1   a
2   a
3   b
4   b
5   a

我们如何得到这个结果?

1   a   2
3   b   2
5   a   1

1 个答案:

答案 0 :(得分:2)

基本上你需要知道什么时候有一个新的“行”来分组。我将他们从改变后的字母中排名

select min(id), letter, sum(my_count)
from (
    select 
        id, letter, count(id) as my_count,
        @rank := if (@letter = letter, @rank, @rank + 1) as rank,
        @letter := letter
    from test
    cross join (select @rank := 0, @letter := '') t
    group by id
) t
group by rank;

FIDDLE