logo

SQL príkaz MERGE

SQL príkaz MERGE kombinuje VLOŽIŤ , VYMAZAŤ , a AKTUALIZOVAŤ výpisy do jedného dotazu.

konštrukčný vzor staviteľa

Príkaz MERGE v SQL

Príkaz MERGE v SQL sa používa na vykonávanie operácií vloženia, aktualizácie a vymazania na a cieľová tabuľka na základe výsledkov JOIN with a zdrojová tabuľka . To umožňuje používateľom synchronizovať dve tabuľky vykonávaním operácií na jednej tabuľke na základe výsledkov z druhej tabuľky.



Príkaz MERGE porovnáva údaje medzi zdrojovou tabuľkou a cieľovou tabuľkou na základe špecifikovaných kľúčových polí. Vykonáva príslušné akcie, ako je vkladanie nových záznamov, aktualizácia existujúcich a vymazanie alebo označenie záznamov, ktoré sa už nenachádzajú v zdroji.

Toto vyhlásenie poskytuje flexibilný spôsob riadenia zmien údajov a bežne sa používa v scenároch, ako je údržba Pomaly sa meniace rozmery ( SCD ) v MERGE INTO target_table
POMOCOU source_table
ON merge_condition
KEĎ SA POTOM VYHNÚ
UPDATE SET stĺpec1 = hodnota1 [, stĺpec2 = hodnota2 …]
KEĎ SA VTEDY NEPOROVNÚ
INSERT (stĺpec1 [, stĺpec2 …])
HODNOTY (hodnota1 [, hodnota2 …]);

Príklad príkazu SQL MERGE

Predpokladajme, že existujú dve tabuľky:



  • PRODUCT_LIST čo je tabuľka, ktorá obsahuje aktuálne podrobnosti o dostupných produktoch s poliami P_ID, P_NAME a P_PRICE zodpovedajúcimi ID, názvu a cene každého produktu.
  • UPDATED_LIST čo je tabuľka, ktorá obsahuje nové podrobnosti o dostupných produktoch s poliami P_ID, P_NAME a P_PRICE zodpovedajúcimi ID, názvu a cene každého produktu.

dva stoly


Úlohou je aktualizovať podrobnosti o produktoch v PRODUCT_LIST podľa UPDATED_LIST.

Riešenie



Teraz, aby sme tento príklad lepšie vysvetlili, rozdeľme ho na kroky.

sql vyberte z viacerých tabuliek

Krok 1: Rozpoznajte tabuľku TARGET a SOURCE

Takže v tomto príklade, keďže sa požaduje aktualizácia produktov v PRODUCT_LIST podľa UPDATED_LIST, teda PRODUCT_LIST bude fungovať ako TARGET a UPDATED_LIST bude fungovať ako SOURCE tabuľka.

cieľová a zdrojová tabuľka

Krok 2: Rozpoznajte operácie, ktoré sa majú vykonať.

Teraz, ako je možné vidieť, existujú tri nezhody medzi tabuľkou TARGET a SOURCE, ktoré sú:

1. Cena kávy v TARGET je 15,00, zatiaľ čo v SOURCE je to 25,00

 PRODUCT_LIST 102 COFFEE 15.00   UPDATED_LIST 102 COFFEE 25.00>

2. V SOURCE nie je žiadny produkt BISCUIT, ale je v TARGET

 PRODUCT_LIST 103 BISCUIT 20.00>

3. V TARGET nie je žiadny produkt CHIPS, ale je v SOURCE

 UPDATED_LIST 104 CHIPS 22.00>

Preto je potrebné vykonať v TARGET-e tri operácie podľa vyššie uvedených nezrovnalostí. Oni sú:

1. Operácia UPDATE

102 COFFEE 25.00>

2. Operácia VYMAZAŤ

json z java objektu
103 BISCUIT 20.00>

3. Operácia VLOŽIŤ

104 CHIPS 22.00>

Krok 3: Napíšte dotaz SQL

The SQL dotaz vykonať vyššie uvedené operácie pomocou vyhlásenie MERGE je:

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

Výkon:

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

Takže týmto spôsobom môžeme vykonať všetky tieto tri hlavné príkazy v SQL spolu s pomocou príkazu MERGE.

Poznámka: V syntaxi MERGE možno použiť akýkoľvek názov iný ako cieľ a zdroj. Používajú sa len na to, aby vám poskytli lepšie vysvetlenie.

Dôležité body o SQL MERGE Statement

  • Príkaz SQL MERGE kombinuje VLOŽIŤ , AKTUALIZOVAŤ , a VYMAZAŤ operácie do jedného príkazu, čo umožňuje efektívnu synchronizáciu údajov medzi zdrojovými a cieľovými tabuľkami.
  • Poskytuje flexibilitu pri prispôsobovaní zložitých SQL skriptov spracovaním viacerých operácií manipulácie s údajmi v jednej transakcii.
  • Príkaz SQL MERGE sa bežne používa v scenároch, ako je udržiavanie pomaly sa meniacich rozmerov (SCD) v dátových skladoch.
  • Správne indexovanie, optimalizované podmienky spojenia a filtrovanie zdrojovej tabuľky na potrebné záznamy môžu optimalizovať výkon príkazu MERGE.