Uma maneira de resolver um problema como esse é usar uma subconsulta com uma variável de usuário. Você pode rastrear o valor de cor da linha anterior usando a variável de usuário e, em seguida, usar a variável de usuário na cláusula where da consulta externa para filtrar as linhas retornadas.
Tente algo assim:
select id,this_color as color
from
(
select id,@last as last_color,@last:=color as this_color
from your_table
order by id
) as sub
where this_color != last_color