J'essaie de mettre à jour plusieurs colonnes dans une instruction MS SQL à l'aide d'une sous-requête. Une recherche m'a conduit à quelque chose comme:Mise à jour de plusieurs colonnes dans SQL avec l'identificateur multi-parties lié
UPDATE table1
SET col1 = a.col1, col2 = a.col2, col3 = a.col3 FROM
(SELECT col1, col2, col3 from table2 where <expression>) AS a
WHERE table1.col1 <expression>
http://geekswithblogs.net/phoenix/archive/2009/10/13/update-multiple-columns-on-sql-server.aspx
Mon problème est que dans l'expression WHERE
intérieure je besoin d'une référence à un domaine spécifique dans le tableau 1:
UPDATE table1
SET col1 = a.col1, col2 = a.col2, col3 = a.col3 FROM
(SELECT col1, col2, col3 from table2 where table1.col0 = table2.col0) AS a
WHERE table1.col1 <expression>
Quand je lance cette requête que je reçois "L'identificateur en plusieurs parties" table1.col0 "n'a pas pu être lié. Apparemment, lorsque vous utilisez cette syntaxe, SQL ne peut pas lier l'enregistrement table1 en cours dans la sous-requête. En ce moment, je répète la sous-requête pour chaque champ et en utilisant la syntaxe:
UPDATE table1
SET col1 = (subquery), col2 = (subquery)...
Mais qui exécute la sous-requête (ce qui est très cher) une fois par colonne, que je voudrais éviter.
Des idées?