SQL Server MERGE (Español)

Resumen: en este tutorial, aprenderá a usar SQL Server MERGE declaración para actualizar los datos en una tabla en función de los valores coincidentes de otra tabla.

Introducción Declaración MERGE de SQL Server

Suponga que tiene dos tablas llamadas tablas de origen y de destino, y necesita actualice la tabla de destino en función de los valores coincidentes de la tabla de origen. Hay tres casos:

  1. La tabla de origen tiene algunas filas que no existen en la tabla de destino. En este caso, debe insertar filas que están en la tabla de origen en la tabla de destino.
  2. La tabla de destino tiene algunas filas que no existen en la tabla de origen. En este caso, debe eliminar filas de la tabla de destino.
  3. La tabla de origen tiene algunas filas con las mismas claves que las filas de la tabla de destino. Sin embargo, estas filas tienen valores diferentes en las columnas que no son clave. En este caso, debe actualizar las filas de la tabla de destino con los valores que provienen de la tabla de origen.

La siguiente imagen ilustra las tablas de origen y destino con las acciones correspondientes: insertar, actualizar y eliminar:

Si use la instrucción INSERT, UPDATE y DELETE individualmente, debe construir tres declaraciones para actualizar los datos a la tabla de destino con las filas coincidentes de la tabla de origen.

Sin embargo, SQL Server proporciona la instrucción MERGE que le permite realizar tres acciones al mismo tiempo. A continuación se muestra la sintaxis de la instrucción MERGE:

Code language: SQL (Structured Query Language) (sql)

Primero, especifica la tabla de destino y la fuente tabla en la cláusula MERGE.

En segundo lugar, la merge_condition determina cómo las filas de la tabla fuente se corresponden con las filas de la tabla de destino. Es similar a la condición de combinación en la cláusula de combinación. Normalmente, utiliza las columnas de clave, ya sea clave principal o clave única para la coincidencia.

En tercer lugar, merge_condition da como resultado tres estados: MATCHED, NOT MATCHED y NOT MATCHED BY SOURCE.

  • MATCHED: estas son las filas que coinciden con la condición de fusión. En el diagrama, se muestran en azul. Para las filas coincidentes, debe actualizar las columnas de las filas en la tabla de destino con valores de la tabla de origen.
  • NOT MATCHED: estas son las filas de la fuente tabla que no tiene filas coincidentes en la tabla de destino. En el diagrama, se muestran en naranja. En este caso, debe agregar las filas de la tabla de origen a la tabla de destino. Tenga en cuenta que NOT MATCHED también se conoce como NOT MATCHED BY TARGET.
  • NOT MATCHED BY SOURCE : estas son las filas de la tabla de destino que no coinciden con ninguna fila de la tabla de origen. Se muestran en verde en el diagrama. Si desea sincronizar la tabla de destino con los datos de la tabla de origen, deberá utilizar esta condición de coincidencia para eliminar filas de la tabla de destino.

Ejemplo de declaración MERGE de SQL Server

Supongamos que tenemos dos tablas sales.category y sales.category_staging que almacenan las ventas por categoría de producto.

Para actualizar los datos a la sales.category (tabla de destino) con los valores de la sales.category_staging (tabla de origen), utilice la siguiente MERGE declaración:

En este ejemplo, usamos los valores de las columnas category_id en ambas tablas como condición de combinación.

  • Primero, las filas con id 1, 3, 4 de la sales.category_staging la tabla coincide con las filas de la tabla de destino, por lo tanto, la instrucción MERGE actualiza los valores en las columnas de nombre de categoría y cantidad en la sales.category tabla.
  • En segundo lugar, las filas con los ID 5 y 6 de la sales.category_staging no existen en la tabla sales.category, por lo que la instrucción MERGE inserta estas filas en la tabla de destino.
  • En tercer lugar, la fila con id 2 de la tabla sales.category no existe en la tabla sales.sales_staging, por lo tanto, la MERGE elimina esta fila.

Como resultado de la fusión, los datos de la tabla sales.category están completamente sincronizados con los datos de la sales.category_staging.

En este tutorial, ha aprendido a usar la instrucción MERGE de SQL Server para realizar cambios en una tabla según los valores coincidentes de otra tabla.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *