テーブルのフィールドを単純なcaseステートメントで更新したいと考えています。しかし、私はこのケース文を選択された数の行に適用したいだけです。私がこれらの行が何であるかを判断する唯一の方法は、別のテーブルに参加し、その2番目のテーブルのフィールドに基づいていくつかの条件を設定することです。SQL Serverの更新表2の条件付きテーブル1
例えば、これは...私はそれが仕事だろうと思ったか
update table1
set table1.field1 = case
when table1.field1 = 'foo' then 'bar'
else 'foobar'
end
join table2 on table1.obj_id=table2.id
where table2.field1 = 'fizzbuzz'
and table2.field2 in ('foo', 'bar', 'foobar')
あるしかし、それは1つが、このような更新ステートメントの内側に参加することはできませんようです。少なくともMS SQLではありません。
私は答えを検索しようとしましたが、私が見つけることができるのは、結合を含む別のテーブルのデータでテーブルを更新しようとする人です。その中にジョインされたステートメント。私はこれが私にとっての解決策であるとは確信していません。私は別のテーブルから更新したくない、別のテーブルに基づいてフィルタをかけたい。
ここで私が考えることができる唯一の解決策は、最初にobj_id
のリストを取得し、次に2番目の更新ステートメントでこれらのIDだけを選択するという2つのクエリソリューションです。理想的ではない。
はそれがFROM句必要ないSQL ServerでのUPDATE文でJOINを使用することができますか? – McNets
"しかし、このような更新ステートメントの中で結合を行うことはできないようですが、MS SQLでは少なくともありません。 。これはそうではありません。 – AK47