Oh, je pense que j'ai compris. Vous vous souciez des séquences de valeurs adjacentes. La première colonne est l'identifiant maximum, la seconde est la valeur et la troisième est la longueur.
Oui, vous pouvez le faire avec des variables :
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);