我正在嘗試使用子查詢更新MS SQL語句中的多個列。一個搜索導致我喜歡的東西:使用綁定的多部分標識符更新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)...
但執行的子查詢(這是非常昂貴的)每列,這是我想避免一次。
任何想法?