SQL MERGE-Anweisung vereint EINFÜGEN , LÖSCHEN , Und UPDATE-Anweisungen in einer einzigen Abfrage.
10 Millionen
MERGE-Anweisung in SQL
Die MERGE-Anweisung in SQL wird verwendet, um Einfüge-, Aktualisierungs- und Löschvorgänge für a durchzuführen Zieltabelle basierend auf den Ergebnissen von JOIN mit a Quelltabelle . Dadurch können Benutzer zwei Tabellen synchronisieren, indem sie Operationen an einer Tabelle basierend auf den Ergebnissen der zweiten Tabelle ausführen.
Die MERGE-Anweisung vergleicht Daten zwischen einer Quelltabelle und einer Zieltabelle basierend auf angegebenen Schlüsselfeldern. Es führt entsprechende Aktionen aus, z. B. das Einfügen neuer Datensätze, das Aktualisieren vorhandener Datensätze und das Löschen oder Markieren von Datensätzen, die nicht mehr in der Quelle vorhanden sind.
Diese Anweisung bietet eine flexible Möglichkeit zur Verwaltung von Datenänderungen und wird häufig in Szenarien wie der Wartung verwendet Langsam verändernde Dimensionen ( SCD ) In IN „target_table“ ZUSAMMENFÜHREN
USING source_table
ON merge_condition
WENN DANN PASST
UPDATE SET Spalte1 = Wert1 [, Spalte2 = Wert2 …]
WENN NICHT ÜBEREINSTIMMUNG, DANN
INSERT (Spalte1 [, Spalte2 …])
WERTE (Wert1 [, Wert2 …]);
Beispiel für eine SQL MERGE-Anweisung
Angenommen, es gibt zwei Tabellen:
- PRODUKTLISTE Dies ist die Tabelle, die die aktuellen Details zu den verfügbaren Produkten enthält, wobei die Felder P_ID, P_NAME und P_PRICE der ID, dem Namen und dem Preis jedes Produkts entsprechen.
- AKTUALISIERTE LISTE Dies ist die Tabelle, die die neuen Details zu den verfügbaren Produkten enthält, wobei die Felder P_ID, P_NAME und P_PRICE der ID, dem Namen und dem Preis jedes Produkts entsprechen.

Die Aufgabe besteht darin, die Details der Produkte in der PRODUCT_LIST gemäß der UPDATED_LIST zu aktualisieren.
Lösung
Um dieses Beispiel besser zu erklären, teilen wir es nun in Schritte auf.
Schritt 1: Erkennen Sie die TARGET- und SOURCE-Tabelle
Da in diesem Beispiel darum gebeten wird, die Produkte in der PRODUCT_LIST gemäß der UPDATED_LIST zu aktualisieren, fungiert PRODUCT_LIST als TARGET und UPDATED_LIST als SOURCE-Tabelle.

Java-Concat-String
Schritt 2: Erkennen Sie die auszuführenden Vorgänge.
Wie nun ersichtlich ist, gibt es drei Nichtübereinstimmungen zwischen der TARGET- und der SOURCE-Tabelle:
1. Die Kosten für KAFFEE betragen in TARGET 15,00 und in SOURCE 25,00
PRODUCT_LIST 102 COFFEE 15.00 UPDATED_LIST 102 COFFEE 25.00>
2. Es gibt kein BISCUIT-Produkt in SOURCE, aber schon in TARGET
PRODUCT_LIST 103 BISCUIT 20.00>
3. Es gibt kein CHIPS-Produkt in TARGET, aber in SOURCE
UPDATED_LIST 104 CHIPS 22.00>
Daher müssen im TARGET entsprechend den oben genannten Abweichungen drei Vorgänge durchgeführt werden. Sie sind:
1. UPDATE-Vorgang
102 COFFEE 25.00>
2. DELETE-Vorgang
char zu int Java
103 BISCUIT 20.00>
3. INSERT-Vorgang
104 CHIPS 22.00>
Schritt 3: Schreiben Sie die SQL-Abfrage
Der SQL-Abfrage um die oben genannten Vorgänge mit Hilfe des durchzuführen MERGE-Anweisung Ist:
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 */>
Ausgabe:
PRODUCT_LIST P_ID P_NAME P_PRICE 101 TEA 10.00 102 COFFEE 25.00 104 CHIPS 22.00>
Auf diese Weise können wir alle diese drei Hauptanweisungen in SQL zusammen mit Hilfe der MERGE-Anweisung ausführen.
Notiz: In der MERGE-Syntax kann jeder andere Name als Ziel und Quelle verwendet werden. Sie werden nur verwendet, um Ihnen eine bessere Erklärung zu geben.
Wichtige Punkte zur SQL MERGE-Anweisung
- Die SQL MERGE-Anweisung kombiniert EINFÜGEN , AKTUALISIEREN , Und LÖSCHEN Operationen in einer einzigen Anweisung zusammenfassen und so eine effiziente Datensynchronisierung zwischen Quell- und Zieltabellen ermöglichen.
- Es bietet Flexibilität bei der Anpassung komplexer SQL-Skripte, indem es mehrere Datenbearbeitungsvorgänge in einer einzigen Transaktion abwickelt.
- Die SQL-MERGE-Anweisung wird häufig in Szenarien wie der Verwaltung langsam wechselnder Dimensionen (SCD) in Data Warehouses verwendet.
- Eine ordnungsgemäße Indizierung, optimierte Join-Bedingungen und das Filtern der Quelltabelle nach erforderlichen Datensätzen können die Leistung der MERGE-Anweisung optimieren.