How to combine near same item by SQL?

后端 未结 6 748
既然无缘
既然无缘 2021-02-11 10:53

I have some data in database:

id user 
1 zhangsan 
2 zhangsan 
3 zhangsan 
4 lisi 
5 lisi 
6 lisi 
7 zhangsan 
8 zhangsan 

I want keep order, a

6条回答
  •  你的背包
    2021-02-11 11:19

    A little improvement to the selected answer would be not to have to define those variables. So this query can be solved in just a single statement:

    SELECT COUNT(*) cnt, user
    FROM (
        SELECT @num := @num + (@name != user) as number,
               @name := user as user
        FROM t, (select @num := 0, @name := '') as s
        ORDER BY id
    ) x
    GROUP BY number
    

    Output:

    | CNT |     USER |
    |-----|----------|
    |   3 | zhangsan |
    |   3 |     lisi |
    |   2 | zhangsan |
    

    Fiddle here

提交回复
热议问题