You can do this with the on duplicate key update
option to insert
. First create a unique index on name
, so duplicates are not allowed:
create unique index TargetTable_name on TargetTable(name);
Then:
insert into TargetTable(name, col1, col2)
select name, col1, col2
from SourceTable
on duplicate key update col1 = coalesce(TargetTable.col1, values(col1)),
col2 = coalesce(TargetTable.col2, values(col2));