Du kan göra detta genom att använda ett smart knep. Tricket är att räkna antalet beskrivningar upp till ett visst ID som är olika från beskrivningen på det id
. För värden i en sekvens kommer detta nummer att vara detsamma.
I MySQL kan du göra denna räkning med hjälp av en korrelerad underfråga. Resten är bara att gruppera efter detta fält för att sammanföra värdena:
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;