sql >> Base de Datos >  >> RDS >> Mysql

Mysql:encuentra el número de filas que tienen el mismo valor una tras otra

Oh, creo que lo descubrí. Le importan las secuencias de valores que son adyacentes. La primera columna es la identificación máxima, la segunda es el valor y la tercera es la longitud.

Sí, puedes hacer esto con 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);