如何在MySQL表中对 连续 数据进行分组,并将其编号存储到额外的列中?
例如:
id, n
1 10
2 10
3 10
4 56
5 10
6 10
7 80
8 12
我想得到这样的东西。请注意,10个中的n列出 两次。
id n cnt
1 10 3
4 56 1
5 10 2
7 80 1
8 12 1
在没有FUNCTION的情况下,这样做是否可以做到这一点?
答案 0 :(得分:2)
您可以使用MySQL变量
select
min( PreQuery.ID ) as StartIDOfGroup,
PreQuery.n,
count(*) as Cnt
from
( select yt.id,
yt.n,
@CommonGroup := @CommonGroup + if( @LastNValue = yt.n, 0, 1 ) as Common,
@LastNValue := yt.n as JustAPlaceholder
from
YourTable yt,
( select @CommonGroup := 0, @LastNValue := 0 ) SQLVars ) PreQuery
group by
PreQuery.n,
PreQuery.Common
order by
StartIDOfGroup