create table f (id number(2),
name varchar2(10))
Table created.
create table b (id number(2),
name varchar2(10))
Table created.
insert into f (id, name)
select 1 id, 'Thom' name from dual union all
select 2 id, 'Bob' name from dual union all
select 3 id, 'Steven' name from dual union all
select 5 id, 'Arthur' name from dual
4 row(s) inserted.
insert into b (id, name)
select 7 id, 'Nataly' name from dual union all
select 9 id, 'Alfred' name from dual
2 row(s) inserted.
commit
Statement processed.
merge into f tgt
using (select coalesce(b1.id, f1.id) id,
coalesce(b1.name, f1.name) name,
f1.f_rowid
from (select id,
name,
rowid f_rowid,
row_number() over (order by id) rn
from f) f1
full outer join (select id,
name,
row_number() over (order by id) rn
from b) b1
on f1.rn = b1.rn) src
on (tgt.rowid = src.f_rowid)
when matched then
update set tgt.id = src.id,
tgt.name = src.name
where tgt.id != src.id
or tgt.name != src.name
when not matched then
insert (tgt.id, tgt.name)
values (src.id, src.name)
2 row(s) updated.
commit
Statement processed.
select * from f
| ID | NAME | 7 | Nataly | 9 | Alfred | 3 | Steven | 5 | Arthur |
|---|
drop table b
Table dropped.
drop table f
Table dropped.
create table f (id number(2),
name varchar2(10))
Table created.
create table b (id number(2),
name varchar2(10))
Table created.
insert into f (id, name)
select 1 id, 'Thom' name from dual
1 row(s) inserted.
insert into b (id, name)
select 7 id, 'Nataly' name from dual union all
select 9 id, 'Alfred' name from dual union all
select 10 id, 'Fred' name from dual
3 row(s) inserted.
commit
Statement processed.
merge into f tgt
using (select coalesce(b1.id, f1.id) id,
coalesce(b1.name, f1.name) name,
f1.f_rowid
from (select id,
name,
rowid f_rowid,
row_number() over (order by id) rn
from f) f1
full outer join (select id,
name,
row_number() over (order by id) rn
from b) b1
on f1.rn = b1.rn) src
on (tgt.rowid = src.f_rowid)
when matched then
update set tgt.id = src.id,
tgt.name = src.name
where tgt.id != src.id
or tgt.name != src.name
when not matched then
insert (tgt.id, tgt.name)
values (src.id, src.name)
3 row(s) updated.
commit
Statement processed.
select * from f
| ID | NAME | 7 | Nataly | 9 | Alfred | 10 | Fred |
|---|
drop table b
Table dropped.
drop table f
Table dropped.