Åh, jag tror jag kom på det. Du bryr dig om sekvenser av värden som ligger intill. Den första kolumnen är det maximala id, den andra är värdet och den tredje är längden.
Ja, du kan göra detta med variabler:
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);