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

Actualice varias columnas en la declaración MERGE ORACLE

No creo que necesites el bucle. Supongo que sus identificaciones son claves principales y no pretendía repetir varias veces en su ejemplo.

¿Funcionaría algo como esto?

Editar según el comentario de Raj A. Esto solo actualizará las filas donde uno de los otros campos haya cambiado. Tenga en cuenta que esto no actualizará las filas donde una es NULL y la otra no es 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 ...]