2014-12-29 39 views
1

計算結果JOIN我有如下兩個表的表:更新使用通過從多行

ObjNameRptName是複合鍵。

表1:

ObjName | RptName | FileName | Success 
---------------------------------------- 
obj1 | rept1 | file1.csv| NULL 

表2:

FileName | Success 
------------------- 
file1.csv | 1 
file1.csv | 0 
file1.csv | 0 

表2可以具有多個條目,如上面。

這些表必須加入FileName

我想更新表1的Success列取決於以下條件:

如果任何結果集的入口(連接表後獲得)的具有Success值爲「1」,那麼表1的SUCCESS列應更新爲「1」。否則應該設置爲「0」。

請幫忙。

+2

哪些DBMS是你在用嗎? – deterministicFail

+0

@deterministicFail SQL Server 2008 R2 –

回答

0

試試這個:從加入

UPDATE a 
SET a.Success = COALESCE(b.Success, 0) 
FROM table1 a 
LEFT OUTER JOIN table2 b ON a.FileName = b.FileName AND b.Success = 1; 
+0

這有幫助。謝謝。 :) –

0
update t1 
set success = 
    case 
    when exists (select * from t2 where FileName = t1.FileName and Success = 1) then 1 
    else 0 
    end 
0

是的,你可以很容易地實現它,請嘗試做這種方式,希望這將解決您的問題:)

UPDATE 
    table1 
SET 
    Sucess = 1 
WHERE 
    EXISTS 
     (
      SELECT 
       1 
      FROM 
       TABLE2 t2 
       LEFT JOIN TABLE1 t1 ON t1.FileNmae = t2.FileName 
       AND t2.successvalue = 1 
     )