SQL Server : est-il possible de mettre à jour (update) une table via SELECT ?

Une commande permet d'effectuer l'opération sur la base de données de Microsoft. Voici comment faire pas à pas.

Le système de gestion de base de données SQL Server permet de mettre à jour un enregistrement d'une table à partir des données d'un enregistrement d'une autre table, c'est-à-dire de combiner la commande UPDATE qui met à jour un enregistrement avec la commande SELECT qui sélectionne un enregistrement.

Pour effectuer cette opération, il faut utiliser la commande UPDATE et y ajouter une clause INNER JOIN. Il est donc nécessaire que les deux enregistrements concernés aient un élément identique. Pour mettre à jour un enregistrement de la table table_1 à partir d'un enregistrement de la table table_2, la commande est la suivante :

UPDATE table_1
SET table_1.colonne_A = table_2.colonne_A,
 table_1.colonne_B = Table_2.colonne_B
FROM Table_1
 INNER JOIN table_2 ON table_1.id = table_2.id
WHERE votre_condition

La condition n'est pas obligatoire mais peut être utilisée dans cette commande, notamment pour préciser quel enregistrement doit être modifié.

Si vous utilisez une version de SQL Server 2008 ou une version plus récente, vous pouvez utiliser la commande MERGE, qui a un temps d'exécution plus rapide :

MERGE INTO table_1
 USING table_2 
 ON table_1.id = table_2.id
 AND votre_condition
WHEN MATCHED THEN
 UPDATE
 SET colonne_A = table_2.colonne_A,
 colonne_B = table_2.colonne_B;

La commande MERGE peut en plus être utilisée pour insérer un nouvel enregistrement si l'enregistrement sélectionné pour être mis à jour n'existe pas.