Вы ищете синтаксис слияния, который является Oracle реализацией запроса upsert (он же update / insert).
Это выглядит так:
merge into tableb b
using tablea a on (a.id = b.id)
when matched then
update set b.col1 = a.col1
when not matched then
insert(id, col1, col2, col3) values(a.id, a.col1, a.col2, a.col3)
Предложение using
содержит часть on
, которая определяет условие соединения между таблицами.
Предложение matched
описывает, что делать в случае возникновения конфликта: здесь вы можете обновить некоторые другие столбец.
Предложение not matched
выполняет фактическую вставку.