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

Agrupando filas similares una al lado de la otra en MySQL

Puedes hacer esto usando un truco inteligente. El truco consiste en contar el número de descripciones hasta un ID particular que son diferentes de la descripción en ese id . Para valores en una secuencia, este número será el mismo.

En MySQL puedes hacer este conteo usando una subconsulta correlacionada. El resto es simplemente agrupar por este campo para juntar los valores:

select min(id) as id, description, count(*) as numCondensed
from (select t.*,
             (select count(*)
              from table t2
              where t2.id <= t.id and t2.description <> t.description
             ) as grp
      from table t
     ) t
group by description, grp;