How to only update part of a column based on conditions?
I don't fully understand the question, but I believe what you're looking for is a MERGE statement.  A rough example from memory:

MERGE INTO table1 t1
USING table2 t2
ON (t1.id=t2.id)
WHEN MATCHED THEN UPDATE SET
    t1.color = t2.color
WHEN NOT MATCHED THEN INSERT
    (t1.ID, t1.color) VALUES (t2.ID, t2.color);


If you don't want to override the colors, you can simply remove the 'WHEN MATCHED' part.