SQL Server MERGE (Deutsch)
Zusammenfassung: In diesem Lernprogramm erfahren Sie, wie Sie SQL Server MERGE
verwenden Anweisung zum Aktualisieren von Daten in einer Tabelle basierend auf Werten, die mit einer anderen Tabelle übereinstimmen.
Einführung SQL Server MERGE-Anweisung
Angenommen, Sie haben zwei Tabellen mit dem Namen Quell- und Zieltabelle und müssen dies tun Aktualisieren Sie die Zieltabelle basierend auf den Werten, die mit der Quelltabelle übereinstimmen. Es gibt drei Fälle:
- Die Quelltabelle enthält einige Zeilen, die in der Zieltabelle nicht vorhanden sind. In diesem Fall müssen Sie Zeilen in der Quelltabelle in die Zieltabelle einfügen.
- Die Zieltabelle enthält einige Zeilen, die in der Quelltabelle nicht vorhanden sind. In diesem Fall müssen Sie Zeilen aus der Zieltabelle löschen.
- Die Quelltabelle enthält einige Zeilen mit denselben Schlüsseln wie die Zeilen in der Zieltabelle. Diese Zeilen haben jedoch unterschiedliche Werte in den Nichtschlüsselspalten. In diesem Fall müssen Sie die Zeilen in der Zieltabelle mit den Werten aus der Quelltabelle aktualisieren.
Das folgende Bild zeigt die Quell- und Zieltabellen mit den entsprechenden Aktionen: Einfügen, Aktualisieren und löschen Sie:
Wenn Sie Verwenden Sie die Anweisungen INSERT
, UPDATE
und DELETE
einzeln. Sie müssen drei separate Anweisungen erstellen Anweisungen zum Aktualisieren der Daten in der Zieltabelle mit den übereinstimmenden Zeilen aus der Quelltabelle.
SQL Server stellt jedoch die Anweisung MERGE
bereit, mit der Sie drei ausführen können Aktionen zur gleichen Zeit. Das Folgende zeigt die Syntax der Anweisung MERGE
:
Code language: SQL (Structured Query Language) (sql)
Zuerst geben Sie die Zieltabelle und die Quelle an Tabelle in der MERGE
-Klausel.
Zweitens bestimmt die merge_condition
, wie die Zeilen aus der Quelltabelle abgeglichen werden die Zeilen aus der Zieltabelle. Es ähnelt der Join-Bedingung in der Join-Klausel. In der Regel verwenden Sie die Schlüsselspalten entweder als Primärschlüssel oder als eindeutigen Schlüssel für den Abgleich.
Drittens führt die merge_condition
zu drei Zuständen: MATCHED
, NOT MATCHED
und NOT MATCHED BY SOURCE
.
-
MATCHED
: Dies sind die Zeilen, die der Zusammenführungsbedingung entsprechen. Im Diagramm sind sie blau dargestellt. Für die übereinstimmenden Zeilen müssen Sie die Zeilenspalten in der Zieltabelle mit Werten aus der Quelltabelle aktualisieren. -
NOT MATCHED
: Dies sind die Zeilen aus der Quelle Tabelle, die keine übereinstimmenden Zeilen in der Zieltabelle enthält. Im Diagramm sind sie orange dargestellt. In diesem Fall müssen Sie die Zeilen aus der Quelltabelle zur Zieltabelle hinzufügen. Beachten Sie, dassNOT MATCHED
auch alsNOT MATCHED BY TARGET
bezeichnet wird. -
NOT MATCHED BY SOURCE
: Dies sind die Zeilen in der Zieltabelle, die mit keinen Zeilen in der Quelltabelle übereinstimmen. Sie sind im Diagramm grün dargestellt. Wenn Sie die Zieltabelle mit den Daten aus der Quelltabelle synchronisieren möchten, müssen Sie diese Übereinstimmungsbedingung verwenden, um Zeilen aus der Zieltabelle zu löschen.
Beispiel für eine SQL Server-MERGE-Anweisung
Angenommen, wir haben zwei Tabellen sales.category
und sales.category_staging
, in denen die Verkäufe nach Produktkategorie gespeichert sind.
Um Daten auf sales.category
(Zieltabelle) mit den Werten aus sales.category_staging
(Quelltabelle) zu aktualisieren, verwenden Sie das folgende MERGE
Anweisung:
In diesem Beispiel haben wir die Werte in den Spalten category_id
in beiden Tabellen als Zusammenführungsbedingung verwendet.
- Zuerst die Zeilen Wenn die ID 1, 3, 4 aus der Tabelle
sales.category_staging
mit den Zeilen aus der Zieltabelle übereinstimmt, aktualisiert die AnweisungMERGE
die Werte in Kategorienamen und Betragsspalten in der Tabellesales.category
. - Zweitens sind die Zeilen mit den IDs 5 und 6 aus der Tabelle
sales.category_staging
nicht vorhanden In der Tabellesales.category
fügt die AnweisungMERGE
diese Zeilen in die Zieltabelle ein. - Drittens die Zeile mit der ID 2 aus der Tabelle
sales.category
ist in der Tabellesales.sales_staging
nicht vorhanden, daher ist dieMERGE
löscht diese Zeile.
Durch die Zusammenführung werden die Daten in der Tabelle sales.category
vollständig mit den Daten in der Tabelle synchronisiert sales.category_staging
-Tabelle.
In diesem Lernprogramm haben Sie gelernt, wie Sie mit der SQL Server-Anweisung MERGE
Änderungen vornehmen in einer Tabelle basierend auf übereinstimmenden Werten aus einer anderen Tabelle.