Maison >base de données >tutoriel mysql >Comment l'instruction MERGE de SQL Server se compare-t-elle à la mise à jour ON DUPLICATE KEY de MySQL ?
Instruction MERGE de SQL Server : une alternative polyvalente à ON DUPLICATE KEY UPDATE de MySQL
Dans MySQL, la clause ON DUPLICATE KEY UPDATE permet modification des lignes existantes lors de l'insertion de données dans une table avec un index UNIQUE ou PRIMARY KEY. Bien que SQL Server n'ait pas d'équivalent exact, l'instruction MERGE offre une solution puissante et flexible pour gérer les données en double.
Présentation de l'instruction MERGE
L'instruction MERGE combine la fonctionnalité des instructions INSERT et UPDATE en une seule opération. Il évalue une condition spécifiée pour déterminer s'il convient d'insérer une nouvelle ligne ou de mettre à jour une ligne existante. La syntaxe d'une instruction MERGE de base est :
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)
Exemple d'utilisation
Pour illustrer l'utilisation de l'instruction MERGE pour gérer les données en double, considérons l'exemple suivant :
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');
Dans cet exemple, l'instruction MERGE tente d'insérer une nouvelle ligne dans MyBigDB.dbo.METER_DATA table en utilisant les données de la table source. Si une ligne avec les mêmes valeurs rtu_id et time_local existe déjà, l'instruction met à jour cette ligne avec les valeurs spécifiées pour Meter_id et Meter_reading. Sinon, l'instruction insère une nouvelle ligne dans le tableau.
Avantages de l'instruction MERGE
Par rapport à la clause ON DUPLICATE KEY UPDATE dans MySQL, l'instruction MERGE dans SQL Le serveur offre plusieurs avantages :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!