MS Sql - 根据表2和表3

时间:2016-12-27 16:36:19

标签: sql sql-server

我想基于表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

2 个答案:

答案 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)

使用COALESCEISNULL都会返回第一个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