私はSQLの初心者で、1つの問題に遭遇しました。
3 つの列の値に基づいて、最近追加された列を更新する必要があります。他のテーブルの対応する列と同じ場合は、他のテーブルの値に基づいてこの列を更新する必要があります。
これは私がこれまでに試したことです
update a
set a.id = ( select top 1 b.id from OtherTable b
where b.k='Doz' and b.year = a.year and b.number = a.number)
from ThisTable a
エラーメッセージは次のとおりです。
サブクエリが複数の値を返しました。サブクエリが =、!=、<、<=、>、>= の後にある場合、またはサブクエリが式として使用されている場合、これは許可されません。
トップ1を使用した場合、複数の行が存在する可能性はありますか?
私の他の試み:
update a
set a.id = b.id
from ThisTable a
inner join OtherTable b
on b.k = 'Doz' and a.year = b.year and a.number = b.number
まだ問題が残っています。
私が行った場合:
select b.id
from ThisTable a
inner join OtherTable b
on b.k = 'Doz' and a.year = b.year and a.number = b.number
更新する必要があるすべての ID が表示されます。列に指定された値を持つ where 句を追加すると、複数ではなく 1 つのレコードのみが取得されます。
私は何を間違っていますか?助けてください