我对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'
我已经读过子查询的更新应该有效,但这不是我的经验。这里有什么更基本的缺失吗? 谢谢你的帮助!
答案 0 :(得分:2)
您的更新语句不必使用子查询或连接。
update Table
set type = 'typeA'
where type = 'typeB'