2014-12-29 77 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 
     )