Я пытаюсь обновить несколько столбцов в инструкции MS SQL, используя подзапрос. Поиск привел меня к чему-то вроде:
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
Моя проблема в том, что во внутреннем выражении WHERE
мне нужна ссылка на конкретное поле в таблице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>
Когда я запускаю этот запрос, я получаю «Идентификатор из нескольких частей» table1.col0 », который не может быть привязан.
". Очевидно, что при использовании этого синтаксиса SQL не может связать текущую запись table1 в подзапросе. Сейчас я повторяю подзапрос для каждого поля и использую синтаксис:
UPDATE table1
SET col1 = (subquery), col2 = (subquery)...
Но это выполняет подзапрос (который очень дорогой) один раз для столбца, чего я хотел бы избежать.
Есть идеи?