Requisito previo: declaración
MERGE Como declaración MERGE en SQL, como se discutió anteriormente en la publicación anterior , es la combinación de tres declaraciones INSERT , DELETE y UPDATE . Entonces, si hay una tabla de origen y una tabla de destino que se fusionarán, con la ayuda de la declaración MERGE, las tres operaciones (INSERTAR, ACTUALIZAR, ELIMINAR) se pueden realizar a la vez.
Un ejemplo simple aclarará el uso de la instrucción MERGE.
Ejemplo:
Supongamos que hay dos tablas:
- PRODUCT_LIST que es la tabla que contiene los detalles actuales sobre los productos disponibles con los campos P_ID, P_NAME y P_PRICE correspondientes al ID, nombre y precio de cada producto.
- UPDATED_LIST 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.
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.
Paso 1: Reconocer el TARGET y la tabla SOURCE
Entonces, en este ejemplo, dado que se solicita actualizar los productos en PRODUCT_LIST según UPDATED_LIST, PRODUCT_LIST actuará como TARGET y UPDATED_LIST actuará como la tabla SOURCE.
Paso 2: Reconocer las operaciones a realizar.
Ahora, como se puede ver, hay tres desajustes entre la tabla TARGET y SOURCE, que son:
1. El costo del CAFÉ en TARGET es de 15,00 mientras que en SOURCE es de 25,00
PRODUCT_LIST 102 COFFEE 15.00 UPDATED_LIST 102 COFFEE 25.00
2. No hay 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 lo tanto, se deben realizar tres operaciones en el TARGET de acuerdo con las discrepancias anteriores. Están:
1. Operación ACTUALIZAR
102 COFFEE 25.00
2. Operación ELIMINAR
103 BISCUIT 20.00
3. Operación INSERTAR
104 CHIPS 22.00
Paso 3: escribir la consulta SQL.
Nota: Consulte esta publicación para conocer la sintaxis de la instrucción MERGE.
La consulta SQL para realizar las operaciones mencionadas anteriormente con la ayuda de la instrucción MERGE 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
Nota:
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA