logo

Declaració SQL MERGE

Declaració SQL MERGE combina INSERT , ELIMINAR , i ACTUALITZACIÓ declaracions en una sola consulta.

edat de sara ali khan

Declaració MERGE en SQL

La instrucció MERGE en SQL s'utilitza per dur a terme operacions d'inserció, actualització i supressió en a taula de destinació basat en els resultats de JOIN with a taula font . Això permet als usuaris sincronitzar dues taules realitzant operacions en una taula en funció dels resultats de la segona taula.



La instrucció MERGE compara dades entre una taula d'origen i una taula de destinació en funció dels camps clau especificats. Realitza accions adequades com inserir registres nous, actualitzar els existents i suprimir o marcar els registres que ja no estan presents a la font.

Aquesta declaració proporciona una manera flexible de gestionar els canvis de dades i s'utilitza habitualment en escenaris com el manteniment Dimensions que canvien lentament ( SCD ) en FUSIONA A TAULA_objectiu
UTILITZAR la taula_origen
ON merge_condition
QUAN COPARAIX LLAVORS
UPDATE SET column1 = value1 [, column2 = value2 ...]
QUAN NO COINCIDEIX LLAVORS
INSERT (columna1 [, columna2...])
VALORS (valor1 [, valor2 …]);

Exemple d'instrucció SQL MERGE

Suposem que hi ha dues taules:



  • PRODUCT_LIST que és la taula que conté els detalls actuals sobre els productes disponibles amb els camps P_ID, P_NAME i P_PRICE corresponents a l'ID, nom i preu de cada producte.
  • ACTUALITZADA_LISTA que és la taula que conté els detalls nous sobre els productes disponibles amb els camps P_ID, P_NAME i P_PRICE corresponents a l'ID, nom i preu de cada producte.

dues taules


La tasca és actualitzar els detalls dels productes de la PRODUCT_LIST segons la UPDATED_LIST.

Solució



Ara, per explicar millor aquest exemple, dividim l'exemple en passos.

en Java regex

Pas 1: reconeixeu la taula TARGET i SOURCE

Per tant, en aquest exemple, com que es demana que actualitzeu els productes de PRODUCT_LIST segons UPDATED_LIST, per tant, PRODUCT_LIST actuarà com a TARGET i UPDATED_LIST actuarà com a taula SOURCE.

taula de destinació i font

Pas 2: Reconèixer les operacions a realitzar.

Ara, com es pot veure, hi ha tres desajustos entre la taula TARGET i SOURCE, que són:

1. El cost del CAFÉ a TARGET és de 15,00 mentre que a SOURCE és de 25,00

 PRODUCT_LIST 102 COFFEE 15.00   UPDATED_LIST 102 COFFEE 25.00>

2. No hi ha cap producte BISCUIT a SOURCE però està a TARGET

 PRODUCT_LIST 103 BISCUIT 20.00>

3. No hi ha cap producte CHIPS a TARGET però està a SOURCE

 UPDATED_LIST 104 CHIPS 22.00>

Per tant, cal fer tres operacions al TARGET segons les discrepàncies anteriors. Ells són:

1. Operació ACTUALITZACIÓ

102 COFFEE 25.00>

2. Operació DELETE

mètode de subcadena java
103 BISCUIT 20.00>

3. Operació INSERT

104 CHIPS 22.00>

Pas 3: escriviu la consulta SQL

El Consulta SQL per realitzar les operacions esmentades amb l'ajuda de la Declaració MERGE és:

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 */>

Sortida:

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

Així, d'aquesta manera, podem realitzar totes aquestes tres declaracions principals en SQL juntament amb l'ajuda de la instrucció MERGE.

Nota: Qualsevol nom que no sigui origen i destinació es pot utilitzar a la sintaxi MERGE. S'utilitzen només per donar-vos una millor explicació.

Aspectes importants sobre la instrucció SQL MERGE

  • La instrucció SQL MERGE combina INSERT , ACTUALITZACIÓ , i ELIMINAR operacions en una sola instrucció, que permet una sincronització eficient de dades entre les taules d'origen i de destinació.
  • Proporciona flexibilitat per personalitzar scripts SQL complexos mitjançant la gestió de múltiples operacions de manipulació de dades en una sola transacció.
  • La instrucció SQL MERGE s'utilitza habitualment en escenaris com el manteniment de dimensions de canvi lent (SCD) als magatzems de dades.
  • La indexació adequada, les condicions d'unió optimitzades i el filtratge de la taula d'origen per als registres necessaris poden optimitzar el rendiment de la instrucció MERGE.