我正在尝试使用子查询更新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
表达式I需要引用表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)...
但这会对每列执行一次子查询(非常昂贵),我希望避免这种情况。
有什么想法吗?