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

Atualizar várias colunas na instrução MERGE ORACLE


Eu não acho que você precisa do loop. Estou assumindo que seus ids são chaves primárias e você não quis repetir a manivela várias vezes em seu exemplo.

Algo assim funcionaria?

Edite por comentário de Raj A. Isso atualizará apenas as linhas em que um dos outros campos foi alterado. Observe que isso não atualizará as linhas em que uma é NULL e a outra não é 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 ...]