Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Atualização profunda do Oracle SQL


MERGE é um caminho a percorrer.

Há um saco:itens=Item1, Item2

Existe um BagInDB:bag_id =1items=Item1,Item3

Portanto, precisamos atualizar o Item1, adicionar o Item2 e excluir o Item3

1º passo (juntar):
select * from bag full outer join (select * from bagInDB where bag_id = 1)

vai te dar
bag_itemName bagInDb_itemName
------------ ----------------
Item1        Item1
Item2        null
null         Item3

2º passo (fusão)
merge into baginDB b
using(query above) q on b.bag_id = 1 and b.itemName = q.bagInDb_itemName
when matched then
delete where q.bag_itemName is null
<rest of the conditions>