Możesz to zrobić za pomocą sprytnej sztuczki. Sztuką jest policzenie liczby opisów do konkretnego identyfikatora, które są różne z opisu pod tym id
. W przypadku wartości w sekwencji ta liczba będzie taka sama.
W MySQL możesz to zliczyć za pomocą skorelowanego podzapytania. Reszta to po prostu grupowanie według tego pola, aby zebrać wartości razem:
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;