我想用簡單的case語句更新表中的字段。但是,我只想將此case語句應用於選定的行數。我確定這些行的唯一方法是加入另一個表,然後根據第二個表中的字段獲得一些條件。SQL Server更新表1與表2中的條件
例如,這是我認爲這是可行的......
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')
然而,似乎一個人不能有這樣的更新語句內加入。至少不在MS SQL中。
我試過尋找一個答案,但我可以找到的是人們試圖更新表中的數據從另一個表中包括一個連接,從而將一個「從」聲明我的連接,然後嵌套選擇聲明與內部的聯接。我不確定這是否是我的解決方案。我不想從另一個表中更新,我想根據另一個表進行過濾。
我現在能想到的唯一解決方案是兩個查詢解決方案,首先檢索obj_id
s列表,然後在第二個更新語句中僅選擇這些id。不理想。
它需要一個FROM子句? – McNets
「但是,看起來像這樣的更新語句中不能有聯接,至少不在MS SQL中。」 。不是這種情況。 – AK47