sql >> Base de Datos >  >> RDS >> Oracle

Actualización profunda de Oracle SQL

MERGE es un camino a seguir.

Hay una Bolsa:items=Item1, Item2

Hay un BagInDB:bag_id =1items=Item1,Item3

Así que necesitamos actualizar el Artículo 1, agregar el Artículo 2 y eliminar el Artículo 3

1er paso (unirse):

select * from bag full outer join (select * from bagInDB where bag_id = 1)

te dará

bag_itemName bagInDb_itemName
------------ ----------------
Item1        Item1
Item2        null
null         Item3

2do paso (fusión)

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>