Oracle
 sql >> Base de données >  >> RDS >> Oracle

Mise à jour approfondie d'Oracle SQL

MERGE est une voie à suivre.

Il y a un sac :items=Item1, Item2

Il y a un BagInDB :bag_id =1items=Item1,Item3

Nous devons donc mettre à jour Item1, ajouter Item2 et supprimer Item3

1ère étape (rejoindre) :

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

ça te donnera

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

2ème étape (fusionner)

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>