Det kan du gøre ved at bruge et smart trick. Tricket er at tælle antallet af beskrivelser op til et bestemt id, der er forskellige fra beskrivelsen på det id
. For værdier i en sekvens vil dette tal være det samme.
I MySQL kan du gøre denne optælling ved hjælp af en korreleret underforespørgsel. Resten er bare gruppering efter dette felt for at bringe værdierne sammen:
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;