Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Aktualisieren Sie mehrere Spalten in der MERGE-Anweisung ORACLE

Ich glaube nicht, dass du die Schleife brauchst. Ich nehme an, Ihre IDs sind Primärschlüssel und Sie wollten Crank in Ihrem Beispiel nicht mehrmals wiederholen.

Würde so etwas funktionieren?

Bearbeiten Sie den Kommentar von Raj A. Dadurch werden nur Zeilen aktualisiert, in denen sich eines der anderen Felder geändert hat. Beachten Sie, dass Zeilen, in denen eine NULL und die andere nicht NULL ist, nicht aktualisiert werden.

MERGE INTO final T 
USING ( SELECT id, score, crank, urank FROM test ) S
   ON ( S.vid = T.id AND 
        ( S.crank != T.crank OR S.score != T.score OR S.urank != T.urank ))
 WHEN MATCHED SET crank = S.crank, score = S.score, 
      crank = S.crank, urank = S.urank 
 WHEN NOT MATCHED THEN INSERT
      [... not sure what you want to do in this case ...]