Для MySql Upsert вы можете проверить это сообщение в блоге . Он выделяет несколько методов, включая обновление и вставку с левым соединением:
update t1 as l
inner join t2 as r on l.a = r.d
set l.b = r.e, l.c = r.f;
insert into t1 (a, b, c)
select l.d, l.e, l.f
from t2 as l
left outer join t1 as r on l.d = r.a
where r.a is null;
Одностороннее утверждение оператора возможно при использовании ON DUPLICATE KEY UPDATE:
insert into t1(a, b, c)
select d, e, f from t2
on duplicate key update b = e, c = f;