Похоже, что число столбцов (Data1, Data2, Data3) не является динамическим.
Итак, я предполагаю, что поле «Цвета» может содержать не более трех слов, разделенных пробелом.
Тогда быстрый и грязный способ сделать это - написать серию операторов обновления, например:
UPDATE Products SET Data1 = get_color(Colors, ' ', 1);
UPDATE Products SET Data2 = get_color(Colors, ' ', 2);
UPDATE Products SET Data3 = get_color(Colors, ' ', 3);
где get_color будет пользовательской функцией, которая возвращает n-е слово из заданной строки:
CREATE FUNCTION get_color(
x VARCHAR(255),
delim VARCHAR(12),
pos INT
)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
delim, '');