Oh, saya pikir saya sudah mengetahuinya. Anda peduli dengan urutan nilai yang berdekatan. Kolom pertama adalah id maksimum, yang kedua adalah nilainya, dan yang ketiga adalah panjangnya.
Ya, Anda dapat melakukannya dengan variabel:
select max(id), val, count(*)
from (select t.*,
(@grp := if(@v = val, @grp,
if(@v := val, @grp + 1, @grp + 1)
)
) as grp
from yourtable t cross join
(select @v := -1, @grp := -1) params
order by id
) t
group by grp, val
order by max(id);