2016-12-27 50 views
0

我想根據表2和表3更新表1.現在我正在兩個單獨的語句中更新它。MS Sql - 基於表2和表3更新表1

是否可以首先根據表2更新表1,然後是否使用連接更新表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 

回答

1

我覺得你只是想coalesce()

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; 
+0

謝謝,查詢將實現所要查找的內容,對此我有點困惑 –

+0

你對什麼感到困惑?這些都是有效的查詢。 –

+0

@BartoszSiemasz - 花時間瞭解我可以點擊那個灰色刻度標記 –

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 
+0

謝謝你,會查詢達到什麼找的,我對此有點困惑。 –