SQL MERGE-erklæring kombinerer INDSÆT , SLET , og OPDATERING erklæringer i én enkelt forespørgsel.
tilfældig c
MERGE-sætning i SQL
MERGE-sætning i SQL bruges til at udføre indsættelses-, opdaterings- og sletningsoperationer på en måltabel baseret på resultaterne af JOIN med en kildetabel . Dette giver brugerne mulighed for at synkronisere to tabeller ved at udføre handlinger på én tabel baseret på resultater fra den anden tabel.
MERGE-sætningen sammenligner data mellem en kildetabel og en måltabel baseret på specificerede nøglefelter. Den udfører passende handlinger som at indsætte nye poster, opdatere eksisterende og slette eller markere poster, der ikke længere findes i kilden.
Denne erklæring giver en fleksibel måde at administrere dataændringer på og bruges almindeligvis i scenarier som vedligeholdelse Langsomt skiftende dimensioner ( SCD ) i FLOT TIL target_table
BRUG kildetabel
ON merge_condition
NÅR MATCH SÅ
OPDATERING SÆT kolonne1 = værdi1 [, kolonne2 = værdi2 …]
NÅR DET IKKE MATCHES
INDSÆT (kolonne 1 [, kolonne 2 …])
VÆRDIER (værdi1 [, værdi2 …]);
Eksempel på SQL MERGE-sætning
Antag, at der er to tabeller:
- PRODUCT_LIST som er den tabel, der indeholder de aktuelle detaljer om de tilgængelige produkter med felterne P_ID, P_NAME og P_PRICE svarende til ID, navn og pris for hvert produkt.
- OPDATERET_LISTE som er den tabel, der indeholder de nye detaljer om de tilgængelige produkter med felterne P_ID, P_NAME og P_PRICE svarende til ID, navn og pris for hvert produkt.

Opgaven er at opdatere detaljerne for produkterne i PRODUCT_LIST i henhold til UPDATED_LIST.
Løsning
liste metoder java
Lad os nu opdele eksemplet i trin for at forklare dette eksempel bedre.
Trin 1: Genkend TARGET- og SOURCE-tabellen
Så i dette eksempel, da det bliver bedt om at opdatere produkterne i PRODUCT_LIST i henhold til UPDATED_LIST, vil PRODUCT_LIST derfor fungere som TARGET og UPDATED_LIST vil fungere som SOURCE-tabellen.

Trin 2: Genkend de operationer, der skal udføres.
Nu som det kan ses, at der er tre uoverensstemmelser mellem TARGET- og SOURCE-tabellen, som er:
1. Prisen for KAFFE i TARGET er 15.00, mens det i SOURCE er 25.00
PRODUCT_LIST 102 COFFEE 15.00 UPDATED_LIST 102 COFFEE 25.00>
2. Der er intet BISCUIT-produkt i SOURCE, men det er i TARGET
PRODUCT_LIST 103 BISCUIT 20.00>
3. Der er intet CHIPS-produkt i TARGET, men det er i SOURCE
UPDATED_LIST 104 CHIPS 22.00>
Derfor skal der udføres tre operationer i TARGET i henhold til ovenstående uoverensstemmelser. De er:
1. OPDATERING operation
102 COFFEE 25.00>
2. SLET-operation
forbindelse java mysql
103 BISCUIT 20.00>
3. INSERT operation
104 CHIPS 22.00>
Trin 3: Skriv SQL-forespørgslen
Det SQL-forespørgsel at udføre de ovennævnte operationer ved hjælp af MERGE-erklæring er:
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 */>
Produktion:
PRODUCT_LIST P_ID P_NAME P_PRICE 101 TEA 10.00 102 COFFEE 25.00 104 CHIPS 22.00>
Så på denne måde kan vi udføre alle disse tre hovedsætninger i SQL sammen ved hjælp af MERGE-sætningen.
Bemærk: Ethvert andet navn end mål og kilde kan bruges i FLOT-syntaksen. De bruges kun til at give dig en bedre forklaring.
Vigtige punkter om SQL MERGE-erklæring
- SQL MERGE-sætningen kombineres INDSÆT , OPDATERING , og SLET operationer i en enkelt sætning, hvilket muliggør effektiv datasynkronisering mellem kilde- og måltabeller.
- Det giver fleksibilitet til at tilpasse komplekse SQL-scripts ved at håndtere flere datamanipulationsoperationer i en enkelt transaktion.
- SQL MERGE-sætningen bruges almindeligvis i scenarier som vedligeholdelse af Slowly Changing Dimensions (SCD) i datavarehuse.
- Korrekt indeksering, optimerede joinbetingelser og filtrering af kildetabellen for nødvendige poster kan optimere ydeevnen af MERGE-sætningen.