使用select子查询进行TSQL批量更新

时间:2012-07-05 14:57:11

标签: tsql syntax

我对Oracle更熟悉,所以SQL Server 2008的语法让我失望。我尝试使用等同于

的查询来执行多行更新
update Table
set type = 'typeA' 
where id in 
(select id from Table where type='typeB')

我收到以下错误:

Msg 512, Level 16, State 1, Procedure Assigned_To_Email, Line 19
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

搜索特定于TSQL的解决方案我尝试了以下语法,但收到了同样的错误。

update a
set type = 'typeA' 
from Table a
join Table b
on a.id = b.id
where b.type='typeB'

我已经读过子查询的更新应该有效,但这不是我的经验。这里有什么更基本的缺失吗? 谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

您的更新语句不必使用子查询或连接。

update Table
set type = 'typeA' 
where type = 'typeB'