MYSQL – Usar Joins en sentencias Update

Tal como mencioné en el artículo Borrar Registros desde un select, al trabajar en nuestra base de datos un escenario común que se nos presenta es el de actualizar los registros de una tabla con los datos de otra tabla o el de actualizar los registros de una tabla con el resultado de una sentencia Select.  Mysql en su documentación nos indica que pueden realizarse actualizaciones de este tipo usando la nomenclatura implícita de joins.  Debido a que esa nomenclatura en muchas ocasiones puede ser un poco confusa me he animado a escribir esta entrada para mostrar como podemos actualizar el contenido de una tabla usando Joins explícitos.

Supongamos la siguiente solicitud:

Dada una tabla de Existencias_Temporal de artículos con las columnas Articulo_id, Existencia, debemos actualizar la existencia de nuestra tabla de Existencias que tiene las columnas Articulo_id, Existencia para todos aquellos registros cuya existencia sea diferente en ambas tablas.

La consulta para realizar este tipo de actualización sería:

     UPDATE EXISTENCIAS DESTINO
 INNER JOIN EXISTENCIAS_TEMPORAL ORIGEN
         ON DESTINO.ARTICU_ID = ORIGEN.ARTICU_ID
        SET DESTINO.EXISTENCIA = ORIGEN.EXISTENCIA
      WHERE ORIGEN.EXISTENCIA <> DESTINO.EXISTENCIA

 

Como puede verse,  la regla es colocar los Joins junto con sus condiciones de enlace antes del SET y las condiciones al final.

 

 

1 Comment

Deja un comentario