2016-12-27 22 views
0

テーブル2とテーブル3に基づいてテーブル1を更新したいと思います。MS Sql - テーブル2とテーブル3に基づいてテーブル1を更新します。

テーブル2を元にテーブル1を更新し、次にテーブル3から更新するNULLSをすべて1つの更新でjoinを使用して更新できますか?

Iは、クエリを構築することを試みた

しかし

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

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

、クエリが探しています何を達成する、ありがとうそれについて少し混乱しています。 –

関連する問題