0

私はOracleに精通しているので、SQLServer2008の構文に驚かされます。と同等のクエリで複数の行の更新を実行しようとしています

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 に答える