Ồ, tôi nghĩ rằng tôi đã tìm ra. Bạn quan tâm đến chuỗi giá trị liền kề. Cột đầu tiên là id tối đa, cột thứ hai là giá trị và cột thứ ba là độ dài.
Có, bạn có thể thực hiện việc này với các biến:
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);