[英]UPDATE table from another table with case statement
我目前遇到了問題。 我需要根據這個條件更新表B中的表A:
這是我從頭腦中想到的錯誤驅動腳本。 這就是我想要發生的事情。
UPDATE TableA
SET
NAME =
(
CASE WHEN TableA.NAME IS NULL THEN
SELECT TableB.NAME
FROM TableB
WHERE TableB._ID = 1
),
ADDRESS =
(
CASE WHEN TableA.ADDRESS IS NULL THEN
SELECT TableB.ADDRESS
FROM TableB
WHERE TableB._ID = 1
)
WHERE TableA._ID = 1
這樣的事情。 有任何想法嗎?
您可以將表連接在一起,並在TableA為null
時使用IsNull
回退到TableB:
update a
set name = IsNull(a.name, b.name)
, address = IsNull(a.address, b.address)
from TableA as a
inner join
TableB as b
on a._ID = b._ID
嘗試這個 -
update a
SET a.name = ( CASE WHEN a.name IS NULL THEN b.name ELSE a.name END ),
a.address = ( CASE WHEN a.address IS NULL THEN b.address ELSE a.address END )
FROM tableA as a, tableB as b
where a.ID = b.ID
您可能會發現使用兩個語句更容易......
UPDATE TableA
SET NAME = (SELECT NAME
FROM TableB
WHERE TableA.ID = TableB.ID)
WHERE NAME IS NULL;
UPDATE TableA
SET ADDRESS = (SELECT ADDRESS
FROM TableB
WHERE TableA.ID = TableB.ID)
WHERE ADDRESS IS NULL;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.