2017-09-15 31 views
0

我一直想弄清楚如何创建一个SQL查询来更新主表,如果值是从2个不同的表中存在的?SQL-如何更新主表,如果值是从2个不同的表中存在的?

例如:

Table1 (Main) 
Employee Number 
Name 
First Name 
Document Name 
Filename 
Original fileName 
DL_Status 

Table 2 (list table) 
Employee Number 
Document Name 
Original Filename 

Table 3(DIR list) 
Original fileName 
created 
extension file name 

输出: 的DL_Status应该被标记为“已完成”和原始文件名从表2的条目仅当原始文件名从表3存在来填充?

+3

请出示一些数据,这也解释了你的逻辑。你的问题不清楚。 –

+0

也许还可以考虑摆脱这个级别的数据冗余 – Magisch

+0

我们看到两个问号,但究竟是什么问题? – Sami

回答

0

您可以在表2和表3上应用连接,然后编写脚本将数据更新到主表 注意:如果数据被明确提及,则答案将更具体。

0

尝试这样:

update table1 
set dl_status = a.dl_status, 
Original_Filename =a.Original_Filename 
from 
(select t2.Employee Number, 'Completed' as dl_status,t2.Original_Filename 
from table2 t2,table3 t3 
where t2.Original_Filename= t3.Original_Filename) a 
where a.Employee Number = table1.Employee Number 
0

最有可能

UPDATE m 
SET [DL_Status] ='Completed', 
    [Original fileName] = f.[Original fileName] 
FROM [Main] m 
JOIN [list table] l ON l.[Employee Number] = m.[Employee Number] AND l.[Document Name] = m.[Document Name] 
JOIN [DIR list] f ON l.[Original fileName] = f.[Original fileName] 
-- optionally 
WHERE m.[DL_Status] <> 'Completed' OR m.[Original fileName] <> f.[Original fileName] 
相关问题