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:

  1. 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.
  2. 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.
  3. 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, dass NOT MATCHED auch als NOT 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 Anweisung MERGE die Werte in Kategorienamen und Betragsspalten in der Tabelle sales.category.
  • Zweitens sind die Zeilen mit den IDs 5 und 6 aus der Tabelle sales.category_staging nicht vorhanden In der Tabelle sales.category fügt die Anweisung MERGE diese Zeilen in die Zieltabelle ein.
  • Drittens die Zeile mit der ID 2 aus der Tabelle sales.category ist in der Tabelle sales.sales_staging nicht vorhanden, daher ist die MERGE 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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.