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.

Ú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.

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.