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

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.

SQL