首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用绑定的多部分标识符更新SQL中的多列

使用绑定的多部分标识符更新SQL中的多列
EN

Stack Overflow用户
提问于 2010-01-18 05:38:54
回答 3查看 22.5K关注 0票数 4

我正尝试使用子查询来更新MS SQL语句中的多个列。一次搜索使我找到了类似这样的东西:

代码语言:javascript
运行
复制
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表达式中,我需要一个对table1中特定字段的引用:

代码语言:javascript
运行
复制
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记录。现在,我正在重复每个字段的子查询,并使用以下语法:

代码语言:javascript
运行
复制
UPDATE table1
SET col1 = (subquery), col2 = (subquery)...

但是这会为每列执行子查询一次(这是非常昂贵的),这是我想要避免的。

有什么想法吗?

EN

Stack Overflow用户

回答已采纳

发布于 2010-01-18 05:43:06

在sql server中,可以在update查询中使用from子句。像在select中一样联接这些表。要更新的表必须包含在联接中。

代码语言:javascript
运行
复制
update table_1
  set field_1 = table_2.value_1
  from table_1
    inner join table_2
      on (table_1.id = table_2.id)
票数 11
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2082769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档