Die MERGE-Anweisung von SQL Server: Eine vielseitige Alternative zu MySQLs ON DUPLICATE KEY UPDATE
In MySQL ermöglicht die ON DUPLICATE KEY UPDATE-Klausel die Änderung bestehender Zeilen beim Einfügen von Daten in eine Tabelle mit einem UNIQUE-Index oder PRIMARY KEY. Während SQL Server kein genaues Äquivalent hat, bietet die MERGE-Anweisung eine leistungsstarke und flexible Lösung für den Umgang mit doppelten Daten.
Einführung in die MERGE-Anweisung
Die MERGE-Anweisung kombiniert die Funktionalität von INSERT- und UPDATE-Anweisungen in einer einzigen Operation. Es wertet eine angegebene Bedingung aus, um zu bestimmen, ob eine neue Zeile eingefügt oder eine vorhandene aktualisiert werden soll. Die Syntax für eine grundlegende MERGE-Anweisung lautet:
MERGE INTO target_table AS target USING source_table AS source ON (target.column_name = source.column_name) WHEN MATCHED THEN UPDATE SET target.column_name = source.column_name WHEN NOT MATCHED THEN INSERT (target.column_names) VALUES (source.column_values)
Beispielverwendung
Um die Verwendung der MERGE-Anweisung zum Umgang mit doppelten Daten zu veranschaulichen, betrachten Sie das folgende Beispiel:
MERGE INTO MyBigDB.dbo.METER_DATA WITH (HOLDLOCK) AS target USING (SELECT 77748 AS rtu_id ,'12B096876' AS meter_id ,56112 AS meter_reading ,'20150602 00:20:11' AS time_local) AS source (rtu_id, meter_id, meter_reading, time_local) ON (target.rtu_id = source.rtu_id AND target.time_local = source.time_local) WHEN MATCHED THEN UPDATE SET meter_id = '12B096876' ,meter_reading = 56112 WHEN NOT MATCHED THEN INSERT (rtu_id, meter_id, meter_reading, time_local) VALUES (77748, '12B096876', 56112, '20150602 00:20:11');
In diesem Beispiel versucht die MERGE-Anweisung, eine neue Zeile in das einzufügen MyBigDB.dbo.METER_DATA-Tabelle unter Verwendung von Daten aus der Quelltabelle. Wenn bereits eine Zeile mit denselben Werten für rtu_id und time_local vorhanden ist, aktualisiert die Anweisung diese Zeile mit den angegebenen Werten für meter_id und meter_reading. Andernfalls fügt die Anweisung eine neue Zeile in die Tabelle ein.
Vorteile der MERGE-Anweisung
Gegenüber der ON DUPLICATE KEY UPDATE-Klausel in MySQL, der MERGE-Anweisung in SQL Server bietet mehrere Vorteile:
Das obige ist der detaillierte Inhalt vonWie schneidet die MERGE-Anweisung von SQL Server im Vergleich zur ON DUPLICATE KEY UPDATE von MySQL ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!