我想基于表2和表3更新表1.现在我在两个单独的语句中更新它。
是否可以首先根据表2更新表1,然后使用join在单个更新中从表3更新NULLS。
我曾尝试构建查询但在哪里包含
tbl1.col1 = tbl3.col1
update tbl1
set tbl1.col1= tbl2.col1
from table1 tbl1
left JOIN table2 tbl2
ON tbl1.col = tbl2.col
left JOIN table3 tbl3
on tbl1.col=tbl3.col and tbl2.col<>tbl3.col
答案 0 :(得分:1)
我想你只想要update tbl1
set col1 = coalesce(tbl2.col1, tbl3.col1)
from table1 tbl1 left join
table2 tbl2
on tbl1.col = tbl2.col left join
table3 tbl3
on tbl1.col = tbl3.col and tbl2.col <> tbl3.col;
:
bin
ext
lib
答案 1 :(得分:0)
使用COALESCE
或ISNULL
都会返回第一个NOT NULL
值
试试这个
UPDATE tbl1
SET tbl1.col1 = COALESCE(tbl2.col1, tbl3.col1) -- ISNULL(tbl2.col1, tbl3.col1)
FROM table1 tbl1
LEFT JOIN table2 tbl2
ON tbl1.col = tbl2.col
LEFT JOIN table3 tbl3
ON tbl1.col = tbl3.col
AND tbl2.col <> tbl3.col