Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Mysql:encontre o número de linhas que têm o mesmo valor uma após a outra


Ah, acho que percebi. Você se preocupa com sequências de valores que são adjacentes. A primeira coluna é o id máximo, a segunda é o valor e a terceira é o comprimento.

Sim, você pode fazer isso com variáveis:
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);