UPDATE desde un SELECT usando SQL Server

Ultima actualización en jueves 12º may. 2022

Update Select

Las Updates de SQL se realizan utilizando referencias directas a una tabla en particular

Usando Inner Joins

El método más básico para realizar esta acción es usar una INNER JOIN , por lo que los valores en las columnas de dos tablas diferentes se comparan entre sí.

	UPDATE
  libros
SET
  libros.autor = autores.nombre
FROM
  libros
INNER JOIN
  autores
ON
  libros.autor_id = autores.id
WHERE
  libros.titulo = 'Don Quixote'
	

sintaxis update sql server

En el ejemplo anterior, estamos UPDATING los libros.autor Field para que coincidan con los autores.nombre para Don Quixote al unir ambas tablas en la consulta a sus respectivos valores coincidentes de autores.id y los libros.autor_id.

Usando MERGE para UPDATE e INSERT simultáneamente

Similar a INNER JOIN.MERGE intentos de realizar una UPDATE y un comando de INSERT juntos.

	MERGE INTO
  libros
USING
  autores
ON
  libros.autor_id = autores.id
WHEN MATCHED THEN
  UPDATE SET
    libros.autor = autores.name
WHEN NOT MATCHED THEN
  INSERT
    (libros.autor_id, libros.autor)
  VALUES
    (autores.id, autores.name)
	

Queremos MERGE(UPDATE / INSERT) la tabla de libros utilizando la tabla de autores secundarios, y estamos coincidiendo con los dos en función de los mismos libros.autor_id = autores.id comparación.

Cuando se coinciden con los MATCHED , cuando se encuentra un registro existente. En ese caso, realizamos una UPDATE estándar tal como lo hicimos antes, estableciendo el campo libros.autor para igualar el campo autores.name

sql update from select

Ahora INSERT un nuevo registro en la tabla de libros y pase a lo largo de los valores para los campos autor_id y autor, Agarró del registro de la tabla de autores asociados.

Con ese autor en la tabla de autores, verificamos si existe un libro correspondiente en los libros.

Si se encuentra un registro, aseguramos que los libros.autor se configura utilizando la UPDATE, y donde no se encuentra ninguna coincidencia, agregamos un nuevo registro a los libros.