Sql 通过计算多行的结果,使用JOIN更新表
我有两个表格如下:Sql 通过计算多行的结果,使用JOIN更新表,sql,sql-server,sql-server-2008,join,sql-update,Sql,Sql Server,Sql Server 2008,Join,Sql Update,我有两个表格如下: ObjName和RptName是一个复合键 表1: ObjName | RptName | FileName | Success ---------------------------------------- obj1 | rept1 | file1.csv| NULL 表2: FileName | Success ------------------- file1.csv | 1 file1.csv | 0 file1.csv | 0 表2可以有多个
ObjName
和RptName
是一个复合键
表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
列:
如果resultset中的任何条目(在加入表后获得)的Success
值为“1”,则表1的Success
列应更新为“1”。否则,应将其设置为“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;
是的,通过加入您可以轻松实现,请尝试这样做,希望这能解决您的问题:)
您使用的是哪种DBMS?@deterministicFail SQL Server 2008 R2,这很有帮助。谢谢。:)
update t1
set success =
case
when exists (select * from t2 where FileName = t1.FileName and Success = 1) then 1
else 0
end
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
)