Oracle
 sql >> Database >  >> RDS >> Oracle

Aggiorna più colonne nell'istruzione MERGE ORACLE

Non penso che tu abbia bisogno del loop. Presumo che i tuoi ID siano chiavi primarie e non intendevi ripetere manovella più volte nel tuo esempio.

Qualcosa del genere funzionerebbe?

Modifica in base al commento di Raj A. Questo aggiornerà solo le righe in cui uno degli altri campi è cambiato. Nota che questo non aggiornerà le righe in cui una è NULL e l'altra non è NULL.

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 ...]