0

我更熟悉 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'

我已经读过使用子查询的更新应该可以工作,但这不是我的经验。这里有没有更基本的东西?谢谢你的帮助!

4

1 回答 1

2

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

update Table
set type = 'typeA' 
where type = 'typeB'
于 2012-07-05T15:00:54.373 回答