Mysql
 sql >> Base de données >  >> RDS >> Mysql

Regrouper des lignes similaires les unes à côté des autres dans MySQL

Vous pouvez le faire en utilisant une astuce astucieuse. L'astuce consiste à compter le nombre de descriptions jusqu'à un identifiant particulier qui sont différentes de la description à cet id . Pour les valeurs d'une séquence, ce nombre sera le même.

Dans MySQL, vous pouvez faire ce décompte en utilisant une sous-requête corrélée. Le reste est simplement regroupé par ce champ pour rassembler les valeurs :

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;