Сделать можно, но, скорее всего, у вас проблемы с моделью данных. Если возникает такая задача, то группы выносятся в отдельную таблицу и делается связь с исходной таблицей.
Если же нужно именно с такой моделью, то вот запрос:
SELECT id, SUBSTRING_INDEX(SUBSTRING_INDEX(groups, ',', g.n), ',', -1) groupName
FROM (
SELECT @n:=@n+1 n FROM
(select 0 union all select 1 union all select 3 union all select 4 union all select 5 union all select 6 union all select 6 union all select 7 union all select 8 union all select 9) s0,
(select 0 union all select 1 union all select 3 union all select 4 union all select 5 union all select 6 union all select 6 union all select 7 union all select 8 union all select 9) s1,
(SELECT @n:=0) sg
) g
JOIN Item ON CHAR_LENGTH(groups)-CHAR_LENGTH(REPLACE(groups, ',', '')) >= g.n-1
ORDER BY id, n
Вот ссылка на рабочий пример на
sqlfiddle. Этот пример предполагает, что у каждой записи не более 100 групп. Если их всегда меньше 10, то таблицу s1 можно убрать из запроса.