logo

Declaración de fusión de SQL

Declaración de fusión de SQL combina INSERTAR , BORRAR , y ACTUALIZAR declaraciones en una sola consulta.

cambiar el nombre del directorio de Linux

Declaración MERGE en SQL

La declaración MERGE en SQL se utiliza para realizar operaciones de inserción, actualización y eliminación en un tabla de destino basado en los resultados de JOIN con un tabla fuente . Esto permite a los usuarios sincronizar dos tablas realizando operaciones en una tabla en función de los resultados de la segunda tabla.

La declaración MERGE compara datos entre una tabla de origen y una tabla de destino en función de campos clave especificados. Realiza acciones apropiadas como insertar nuevos registros, actualizar los existentes y eliminar o marcar registros que ya no están presentes en la fuente.



Esta declaración proporciona una forma flexible de gestionar los cambios de datos y se utiliza habitualmente en escenarios como el mantenimiento Dimensiones que cambian lentamente ( SCD ) en FUSIONAR EN target_table
USANDO fuente_table
EN merge_condition
CUANDO SE EMPAREJÓ ENTONCES
ACTUALIZAR CONJUNTO columna1 = valor1 [, columna2 = valor2…]
CUANDO NO EMPAREJÓ ENTONCES
INSERTAR (columna1 [, columna2…])
VALORES (valor1 [, valor2…]);

Ejemplo de declaración SQL MERGE

Supongamos que hay dos tablas:

  • LISTA DE PRODUCTOS que es la tabla que contiene el detalle actual de los productos disponibles con los campos P_ID, P_NAME y P_PRICE correspondientes al ID, nombre y precio de cada producto.
  • LISTA ACTUALIZADA que es la tabla que contiene los nuevos detalles sobre los productos disponibles con los campos P_ID, P_NAME y P_PRICE correspondientes al ID, nombre y precio de cada producto.

dos mesas


La tarea es actualizar los detalles de los productos en PRODUCT_LIST según UPDATED_LIST.

Solución

Ahora, para explicar mejor este ejemplo, dividámoslo en pasos.

¿Qué es correo electrónico?

Paso 1: Reconocer la tabla TARGET y SOURCE

Entonces, en este ejemplo, dado que se solicita actualizar los productos en PRODUCT_LIST según UPDATED_LIST, PRODUCT_LIST actuará como OBJETIVO y UPDATED_LIST actuará como la tabla FUENTE.

tabla de destino y origen

Paso 2: Reconocer las operaciones a realizar.

Ahora bien, como se puede observar existen tres discrepancias entre la tabla TARGET y la SOURCE, que son:

1. El costo del CAFÉ en TARGET es 15.00 mientras que en SOURCE es 25.00

 PRODUCT_LIST 102 COFFEE 15.00   UPDATED_LIST 102 COFFEE 25.00>

2. No hay ningún producto BISCUIT en SOURCE pero sí en TARGET

 PRODUCT_LIST 103 BISCUIT 20.00>

3. No hay ningún producto CHIPS en TARGET pero sí en SOURCE

 UPDATED_LIST 104 CHIPS 22.00>

Por tanto, es necesario realizar tres operaciones en el TARGET de acuerdo con las discrepancias anteriores. Ellos son:

1. ACTUALIZAR operación

102 COFFEE 25.00>

2. BORRAR operación

np significa
103 BISCUIT 20.00>

3. INSERTAR operación

104 CHIPS 22.00>

Paso 3: escriba la consulta SQL

El consulta SQL realizar las operaciones antes mencionadas con la ayuda del Declaración de fusión es:

SQL
/* Selecting the Target and the Source */ MERGE PRODUCT_LIST AS TARGET  USING UPDATE_LIST AS SOURCE   /* 1. Performing the UPDATE operation */  /* If the P_ID is same,   check for change in P_NAME or P_PRICE */  ON (TARGET.P_ID = SOURCE.P_ID)  WHEN MATCHED   AND TARGET.P_NAME  SOURCE.P_NAME   OR TARGET.P_PRICE  SOURCE.P_PRICE  /* Update the records in TARGET */  THEN UPDATE   SET TARGET.P_NAME = SOURCE.P_NAME,  TARGET.P_PRICE = SOURCE.P_PRICE    /* 2. Performing the INSERT operation */  /* When no records are matched with TARGET table   Then insert the records in the target table */  WHEN NOT MATCHED BY TARGET   THEN INSERT (P_ID, P_NAME, P_PRICE)   VALUES (SOURCE.P_ID, SOURCE.P_NAME, SOURCE.P_PRICE)  /* 3. Performing the DELETE operation */  /* When no records are matched with SOURCE table   Then delete the records from the target table */  WHEN NOT MATCHED BY SOURCE   THEN DELETE /* END OF MERGE */>

Producción:

 PRODUCT_LIST P_ID P_NAME P_PRICE 101 TEA 10.00  102 COFFEE 25.00 104 CHIPS 22.00>

Entonces, de esta manera, podemos realizar estas tres declaraciones principales en SQL juntas con la ayuda de la declaración MERGE.

Nota: Se puede utilizar cualquier nombre que no sea destino y origen en la sintaxis MERGE. Se utilizan sólo para darle una mejor explicación.

Puntos importantes sobre la declaración SQL MERGE

  • La declaración SQL MERGE combina INSERTAR , ACTUALIZAR , y BORRAR operaciones en una sola declaración, lo que permite una sincronización eficiente de datos entre las tablas de origen y de destino.
  • Proporciona flexibilidad para personalizar scripts SQL complejos al manejar múltiples operaciones de manipulación de datos en una sola transacción.
  • La declaración SQL MERGE se usa comúnmente en escenarios como el mantenimiento de dimensiones que cambian lentamente (SCD) en almacenes de datos.
  • La indexación adecuada, las condiciones de unión optimizadas y el filtrado de la tabla de origen para los registros necesarios pueden optimizar el rendimiento de la declaración MERGE.