Heim >Datenbank >MySQL-Tutorial >Wie ahmt die MERGE-Anweisung von SQL Server die ON DUPLICATE KEY UPDATE von MySQL nach?
Das Gegenstück von SQL Server zu MySQLs ON DUPLICATE KEY UPDATE
In MySQL ermöglicht die ON DUPLICATE KEY UPDATE-Klausel Benutzern das Aktualisieren vorhandener Zeilen statt Einfügen neuer, wenn ein doppelter Schlüssel gefunden wird. Diese Funktion ist besonders nützlich, wenn es um eindeutige Einschränkungen und Primärschlüssel geht.
MERGE-Anweisung von SQL Server
Während SQL Server kein exaktes Äquivalent zu MySQLs ON DUPLICATE KEY hat UPDATE, es bietet die MERGE-Anweisung als vergleichbare Lösung. MERGE kombiniert die Funktionalität von INSERT-, UPDATE- und DELETE-Anweisungen in einer einzigen Abfrage und ermöglicht so eine effiziente Verarbeitung doppelter Werte.
Implementierung von ON DUPLICATE KEY UPDATE mit MERGE
Um das On-Duplicate-Update-Verhalten in SQL Server zu implementieren, können Sie Folgendes verwenden Syntax:
MERGE INTO [target_table] AS target USING [source_table] AS source ON (target.[matching_column] = source.[matching_column]) WHEN MATCHED THEN UPDATE SET [target_column] = [source_column] WHEN NOT MATCHED THEN INSERT ([target_column]) VALUES ([source_column]);
Beispiel
Betrachten Sie die folgende Abfrage, die Daten in eine Tabelle mit dem Namen METER_DATA einfügt und Zeilenwerte aktualisiert, wenn basierend auf rtu_id und time_local ein Duplikat vorhanden ist Spalten:
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');
Diese Abfrage fügt die Werte aus der Quelltabelle in die Zieltabelle ein, wenn eine Zeile mit die gleiche rtu_id und time_local existiert noch nicht. Wenn eine doppelte Zeile vorhanden ist, wird stattdessen die Aktualisierung durchgeführt, wobei die vorhandenen Daten in der Zieltabelle erhalten bleiben.
Das obige ist der detaillierte Inhalt vonWie ahmt die MERGE-Anweisung von SQL Server die ON DUPLICATE KEY UPDATE von MySQL nach?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!