Это подойдет для вашего конкретного примера
select left(colours,locate(',',colours)-1) as colour1
, right(colours, length(colours)- locate(',',colours)) as colour2
from
(select id, group_concat(colour) as colours
from table1
group by id) concatenation
не очень общий или устойчивый.
Если набор значений (цветов) был фиксирован, я 'я бы предпочел повернуть его так:
select id, sum(RED) as RED , sum(GREEN) as GREEN , sum(BLUE) as BLUE
from
(select id
, colour='red' as RED
, colour='green' as GREEN
, colour='blue' as BLUE
from table1) coded
group by id;
, но это не тот формат вывода, который вы запрашивали.