logo

Instrucțiunea SQL MERGE

Instrucțiunea SQL MERGE combine INTRODUCE , ȘTERGE , și UPDATE declarații într-o singură interogare.

modulație de amplitudine

Instrucțiunea MERGE în SQL

Instrucțiunea MERGE în SQL este utilizată pentru a efectua operațiuni de inserare, actualizare și ștergere pe a tabelul țintă pe baza rezultatelor JOIN cu a tabel sursă . Acest lucru permite utilizatorilor să sincronizeze două tabele efectuând operații pe un tabel pe baza rezultatelor din al doilea tabel.



Instrucțiunea MERGE compară datele dintre un tabel sursă și un tabel țintă pe baza câmpurilor cheie specificate. Efectuează acțiuni adecvate, cum ar fi inserarea înregistrărilor noi, actualizarea celor existente și ștergerea sau marcarea înregistrărilor care nu mai sunt prezente în sursă.

Această declarație oferă o modalitate flexibilă de a gestiona modificările datelor și este utilizată în mod obișnuit în scenarii precum întreținerea Dimensiunile care se schimbă încet ( SCD ) în MERGE INTO target_table
UTILIZAREA tabel_sursă
ON merge_condition
CÂND POTRIVIT ATUNCI
UPDATE SET coloana1 = valoare1 [, coloana2 = valoare2 …]
CÂND NU S-A POTRIVIT ATUNCI
INSERT (coloana 1 [, coloana 2 ...])
VALORI (valoare1 [, valoare2 …]);

Exemplu de instrucțiune SQL MERGE

Să presupunem că există două tabele:



  • LISTA DE PRODUSE care este tabelul care conține detaliile curente despre produsele disponibile cu câmpurile P_ID, P_NAME și P_PRICE corespunzătoare ID-ului, numelui și prețului fiecărui produs.
  • UPDATED_LIST care este tabelul care conține noile detalii despre produsele disponibile cu câmpurile P_ID, P_NAME și P_PRICE corespunzătoare ID-ului, numelui și prețului fiecărui produs.

doua mese


Sarcina este de a actualiza detaliile produselor din PRODUCT_LIST conform UPDATED_LIST.

Soluţie



cadru de primăvară

Acum, pentru a explica mai bine acest exemplu, să împărțim exemplul în pași.

Pasul 1: Recunoașteți tabelul ȚINTĂ și SURSA

Așadar, în acest exemplu, deoarece i se cere actualizarea produselor din PRODUCT_LIST conform UPDATED_LIST, prin urmare PRODUCT_LIST va acționa ca TARGET și UPDATED_LIST va acționa ca tabel SOURCE.

tabelul țintă și sursă

Pasul 2: Recunoașteți operațiunile care trebuie efectuate.

Acum, după cum se poate observa că există trei nepotriviri între tabelul ȚINTĂ și SURSA, care sunt:

1. Costul CAFEA în TARGET este de 15,00 în timp ce în SOURCE este de 25,00

 PRODUCT_LIST 102 COFFEE 15.00   UPDATED_LIST 102 COFFEE 25.00>

2. Nu există un produs BISCUIT în SOURCE dar este în TARGET

 PRODUCT_LIST 103 BISCUIT 20.00>

3. Nu există nici un produs CHIPS în TARGET dar este în SOURCE

 UPDATED_LIST 104 CHIPS 22.00>

Prin urmare, în TARGET trebuie efectuate trei operațiuni în funcție de discrepanțele de mai sus. Sunt:

1. Operațiunea UPDATE

102 COFFEE 25.00>

2. Operațiunea DELETE

concat șiruri de caractere java
103 BISCUIT 20.00>

3. Operațiunea INSERT

104 CHIPS 22.00>

Pasul 3: scrieți interogarea SQL

The interogare SQL să efectueze operaţiile mai sus menţionate cu ajutorul Declarație MERGE este:

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

Ieșire:

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

Deci, în acest fel, putem efectua toate aceste trei instrucțiuni principale în SQL împreună cu ajutorul instrucțiunii MERGE.

Notă: Orice nume, altul decât țintă și sursă, poate fi folosit în sintaxa MERGE. Sunt folosite doar pentru a vă oferi o explicație mai bună.

Puncte importante despre instrucțiunea SQL MERGE

  • Instrucțiunea SQL MERGE combină INTRODUCE , ACTUALIZAȚI , și ȘTERGE operațiuni într-o singură instrucțiune, permițând sincronizarea eficientă a datelor între tabelele sursă și țintă.
  • Oferă flexibilitate în personalizarea scripturilor SQL complexe prin gestionarea mai multor operațiuni de manipulare a datelor într-o singură tranzacție.
  • Instrucțiunea SQL MERGE este folosită în mod obișnuit în scenarii precum menținerea dimensiunilor cu schimbare lentă (SCD) în depozitele de date.
  • Indexarea corectă, condițiile de îmbinare optimizate și filtrarea tabelului sursă pentru înregistrările necesare pot optimiza performanța instrucțiunii MERGE.