[英]Update a column in table A based on values in table B using a CASE statement
我有一個棘手的問題。
我將有一個表A
由兩列A.ID
和A.Cat1_Avail
。 目前Cat1_Avail
列是空的。
我想根據一個邏輯問題更新A.Cat1Avail
中的值。 特別是,我有另一個表B
由B.ID
和B.Feature
組成。 B.Feature
可以包含以下值: Cat1
、 Cat2
或NULL
。
對於匹配 ID,我想在A.Cat1_Avail
中插入一個 1,因為表B
中的匹配記錄在B.Feature
中包含值Cat1
。 在Cat2
的情況下, A.Cat1_Avail
應為 0。
總之,我想根據邏輯問題更新一列(ID匹配嗎? B.Feature
的內容是什么?)。
我希望這能讓事情變得清晰,而且不要太具體。
我想這個問題可以通過依次使用幾個命令來解決。 但我想要一個可以處理這個問題的命令。
使用合並來實現它,如下所示:
MERGE INTO TABLEA A USING (
SELECT
ID,
CASE FEATURE
WHEN 'cat1' THEN 1
WHEN 'cat2' THEN 0
END AS CAT
FROM
TABLEB
) B ON ( A.ID = B.ID )
WHEN MATCHED THEN
UPDATE SET A.CAT1_AVAIL = B.CAT
干杯!!
更新聲明!
UPDATE testa set testa.lvalue = (case when testb.lvalue = 'cat1' then 1
when testb.lvalue = 'cat2' then 0
else null end)
FROM testa join testb on (testa.id = testb.id)
請嘗試一下
Update a
set
a.Cat1Avail = (case WHEN b.Feature = 'cat1' THEN 1
WHEN b.Feature ='cat2' THEN 0
ELSE NULL End)
from A a
join B b
on a.ID= b.ID
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.