logo

SQL MERGE paziņojums

SQL MERGE paziņojums apvieno IEVIETOT , DZĒST , un ATJAUNINĀT paziņojumus vienā vaicājumā.

obj java

MERGE paziņojums SQL

MERGE priekšraksts SQL tiek izmantots, lai veiktu ievietošanas, atjaunināšanas un dzēšanas darbības a mērķa tabula pamatojoties uz JOIN rezultātiem ar a avota tabula . Tas ļauj lietotājiem sinhronizēt divas tabulas, veicot darbības vienā tabulā, pamatojoties uz rezultātiem no otrās tabulas.



MERGE priekšraksts salīdzina datus starp avota tabulu un mērķa tabulu, pamatojoties uz norādītajiem atslēgas laukiem. Tas veic atbilstošas ​​darbības, piemēram, jaunu ierakstu ievietošanu, esošo atjaunināšanu un ierakstu dzēšanu vai atzīmēšanu, kas vairs nav avotā.

Šis paziņojums nodrošina elastīgu veidu, kā pārvaldīt datu izmaiņas, un to parasti izmanto tādos gadījumos kā uzturēšana Lēnām mainās izmēri ( SCD ) iekšā PIEVIENOT mērķa_tabulā
IZMANTOJOT avota_tabulu
IESLĒGTS sapludināšanas_nosacījums
KAD SASKAŅA TAD
ATJAUNINĀT SET 1. sleja = 1. vērtība [,2. sleja = 2. vērtība …]
KAD NEATBILST TAD
INSERT (1. kolonna [, 2. kolonna …])
VĒRTĪBAS (vērtība1 [, vērtība2 …]);

SQL MERGE paziņojuma piemērs

Pieņemsim, ka ir divas tabulas:



  • PRODUCT_LIST kas ir tabula, kurā ir ietverta pašreizējā informācija par pieejamajiem produktiem ar laukiem P_ID, P_NAME un P_CENA, kas atbilst katra produkta ID, nosaukumam un cenai.
  • UPDATED_LIST kas ir tabula, kurā ir ietverta jauna informācija par pieejamajiem produktiem ar laukiem P_ID, P_NAME un P_CENA, kas atbilst katra produkta ID, nosaukumam un cenai.

divi galdi


Uzdevums ir atjaunināt informāciju par produktiem PRODUCT_LIST saskaņā ar UPDATED_LIST.

Risinājums



Tagad, lai labāk izskaidrotu šo piemēru, sadalīsim piemēru soļos.

1. darbība: atpazīstiet tabulu MĒRĶIS un AVOTS

Tātad šajā piemērā, tā kā tiek lūgts atjaunināt produktus sarakstā PRODUCT_LIST atbilstoši UPDATED_LIST, PRODUCT_LIST darbosies kā MĒRĶIS un UPDATED_LIST darbosies kā AVOTS tabula.

mērķa un avota tabula

32 bitu arhitektūra pret 64 bitu

2. darbība: atpazīstiet veicamās darbības.

Tagad, kā redzams, ir trīs neatbilstības starp tabulu TARGET un SOURCE, kas ir:

1. COFFEE cena pakalpojumā TARGET ir 15,00, savukārt SOURCE — 25,00.

 PRODUCT_LIST 102 COFFEE 15.00   UPDATED_LIST 102 COFFEE 25.00>

2. SOURCE nav neviena BISCUIT produkta, bet tas ir TARGET

 PRODUCT_LIST 103 BISCUIT 20.00>

3. TARGET nav CHIPS produkta, bet tas ir SOURCE

 UPDATED_LIST 104 CHIPS 22.00>

Tāpēc MĒRĶI ir jāveic trīs darbības saskaņā ar iepriekš minētajām neatbilstībām. Viņi ir:

1. UPDATE darbība

102 COFFEE 25.00>

2. DELETE darbība

json no java objekta
103 BISCUIT 20.00>

3. INSERT darbība

104 CHIPS 22.00>

3. darbība. Uzrakstiet SQL vaicājumu

The SQL vaicājums veikt augstāk minētās darbības ar palīdzību MERGE paziņojums ir:

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

Izvade:

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

Tātad, šādā veidā mēs varam izpildīt visus šos trīs galvenos priekšrakstus SQL kopā ar MERGE priekšraksta palīdzību.

Piezīme: MERGE sintaksē var izmantot jebkuru nosaukumu, kas nav mērķis un avots. Tie tiek izmantoti tikai, lai sniegtu jums labāku skaidrojumu.

Svarīgi punkti par SQL MERGE paziņojumu

  • SQL MERGE priekšraksts apvieno IEVIETOT , ATJAUNINĀT , un DZĒST operācijas vienā priekšrakstā, ļaujot efektīvi sinhronizēt datus starp avota un mērķa tabulām.
  • Tas nodrošina elastību sarežģītu SQL skriptu pielāgošanā, veicot vairākas datu apstrādes darbības vienā darījumā.
  • SQL MERGE priekšraksts parasti tiek izmantots tādos gadījumos kā lēni mainīgu dimensiju (SCD) uzturēšana datu noliktavās.
  • Pareiza indeksēšana, optimizēti pievienošanās nosacījumi un nepieciešamo ierakstu avota tabulas filtrēšana var optimizēt MERGE priekšraksta veiktspēju.