logo

SQL MERGE pareiškimas

SQL MERGE pareiškimas derina ĮDĖTI , IŠTRINTI , ir ATNAUJINTI pareiškimus į vieną užklausą.

list.sort java

MERGE pareiškimas SQL

MERGE sakinys SQL naudojamas įterpimo, atnaujinimo ir ištrynimo operacijoms atlikti a tikslinė lentelė remiantis JOIN su a rezultatais šaltinio lentelė . Tai leidžia vartotojams sinchronizuoti dvi lenteles atliekant operacijas vienoje lentelėje pagal rezultatus iš antrosios lentelės.



Teiginys MERGE palygina šaltinio ir tikslinės lentelės duomenis pagal nurodytus raktų laukus. Ji atlieka atitinkamus veiksmus, pvz., įterpia naujus įrašus, atnaujina esamus ir ištrina arba pažymi įrašus, kurių nebėra šaltinyje.

Šis teiginys suteikia lankstų būdą valdyti duomenų pakeitimus ir dažniausiai naudojamas tokiais atvejais kaip priežiūra Lėtai keičiasi matmenys ( SCD ) in SUJUNGTI Į tikslinę lentelę
NAUDOJANT šaltinio_lentelę
ĮJUNGTA merge_condition
KADA SUTAPA TADA
ATNAUJINIMO RINKINYS 1 stulpelis = 1 vertė [, 2 stulpelis = 2 vertė …]
KAI NESUTAIP TADA
INSERT (1 stulpelis [, 2 stulpelis …])
VERTĖS (reikšmė1 [, reikšmė2 …]);

SQL MERGE pareiškimo pavyzdys

Tarkime, kad yra dvi lentelės:



  • PRODUCT_LIST Tai yra lentelė, kurioje pateikiama naujausia informacija apie galimus produktus, kurių laukai P_ID, P_NAME ir P_KAINA atitinka kiekvieno produkto ID, pavadinimą ir kainą.
  • UPDATED_LIST Tai yra lentelė, kurioje pateikiama nauja išsami informacija apie galimus produktus, kurių laukai P_ID, P_NAME ir P_KAINA atitinka kiekvieno produkto ID, pavadinimą ir kainą.

du stalai


Užduotis yra atnaujinti išsamią produktų, esančių PRODUCT_LIST, informaciją pagal UPDATED_LIST.

Sprendimas



Dabar norėdami geriau paaiškinti šį pavyzdį, padalykime pavyzdį į veiksmus.

1 veiksmas: atpažinkite lenteles TARGET ir SOURCE

Taigi šiame pavyzdyje, kadangi prašoma atnaujinti PRODUCT_LIST produktus pagal UPDATED_LIST, PRODUCT_LIST veiks kaip TARGET, o UPDATED_LIST veiks kaip SOURCE lentelė.

tikslo ir šaltinio lentelė

2 veiksmas: atpažinkite atliktinas operacijas.

Dabar, kaip matyti, yra trys lentelės TARGET ir SOURCE neatitikimai, kurie yra:

np taškas

1. KAVOS kaina TARGET yra 15,00, o SOURCE - 25,00

 PRODUCT_LIST 102 COFFEE 15.00   UPDATED_LIST 102 COFFEE 25.00>

2. SOURCE nėra BISCUIT produkto, bet jis yra TARGET

 PRODUCT_LIST 103 BISCUIT 20.00>

3. TARGET nėra CHIPS produkto, bet jis yra SOURCE

 UPDATED_LIST 104 CHIPS 22.00>

Todėl, atsižvelgiant į pirmiau nurodytus neatitikimus, TARGET reikia atlikti tris operacijas. Jie yra:

1. UPDATE operacija

102 COFFEE 25.00>

2. DELETE operacija

perbrauktas žymėjimas
103 BISCUIT 20.00>

3. INSERT operacija

104 CHIPS 22.00>

3 veiksmas: parašykite SQL užklausą

The SQL užklausa atlikti aukščiau paminėtas operacijas su pagalba MERGE pareiškimas yra:

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

Išvestis:

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

Taigi tokiu būdu mes galime atlikti visus šiuos tris pagrindinius teiginius SQL kartu su sakinio MERGE pagalba.

Pastaba: MERGE sintaksėje gali būti naudojamas bet koks pavadinimas, išskyrus tikslą ir šaltinį. Jie naudojami tik norint geriau paaiškinti.

Svarbūs dalykai apie SQL MERGE pareiškimą

  • SQL MERGE sakinys sujungia ĮDĖTI , ATNAUJINTI , ir IŠTRINTI operacijas į vieną sakinį, leidžiantį efektyviai sinchronizuoti šaltinio ir tikslinių lentelių duomenis.
  • Tai suteikia lankstumo tinkinant sudėtingus SQL scenarijus, atliekant kelias duomenų tvarkymo operacijas vienoje operacijoje.
  • SQL MERGE sakinys dažniausiai naudojamas tokiuose scenarijuose kaip lėtai besikeičiančių dimensijų (SCD) palaikymas duomenų saugyklose.
  • Tinkamas indeksavimas, optimizuotos prisijungimo sąlygos ir būtinų įrašų šaltinio lentelės filtravimas gali optimizuoti MERGE sakinio našumą.