U kunt dit doen door een slimme truc te gebruiken. De truc is om het aantal beschrijvingen tot een bepaalde id te tellen die verschillend zijn van de beschrijving op die id
. Voor waarden in een reeks is dit nummer hetzelfde.
In MySQL kunt u deze telling doen met behulp van een gecorreleerde subquery. De rest groepeert alleen op dit veld om de waarden bij elkaar te brengen:
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;