繁体   English   中英

SQL连接,从第二个表中提取值并将其添加到第一个表中

[英]Sql join, extract value from the second table and add it to the first one

我在Mysql中有2个表。 我需要以某种方式将它们加入,以从第二个表中获取一个值到第一个表中。

表格1

Day     EmployeeId  Total   EmployeeName

1           2         20     Josh
1           1         20     Mike
2           2          5     Josh
2           1         10     Mike
3           3          5     Eric

表2

Day     EmployeeId  Max_Total 

1           2          40   
1           1          40   
2           2          5    
2           1          15         

我需要得到类似表3的内容

Day     EmployeeId  Total   EmployeeName  Max_Total

1           2        20        Josh         40
1           1        20        Mike         40  
2           2        5         Josh          5
2           1        10        Mike         15
3           3        5         Eric         null

因此,需要以某种方式创建和填充此Max_Total列。 这个Day_EmployedId组合在两个表中都是唯一的,应该以某种方式从第二个表中提取值并将其添加到第一个表中。

有时第一个表可以具有更多的值,有时第二个表可以具有更多的值,但是第一个表将始终是需要操纵/添加的值。

任何提示将不胜感激。 谢谢

您正在两个字段上寻找left join

select t1.*, t2.max_total
from table1 t1 left join
     table2 t2
     on t1.day = t2.day and t1.employeeid = t2.employeeid;

我不建议实际更新table1 您可以根据需要生成数据。 但是,为了使更新生效,您需要先在表中添加一列,然后再对其进行更新。

您需要分离任务。

  1. 更改您的Table1以添加列Max_Total
  2. 编写UPDATE查询以更新Table1Max_Total

查询:

UPDATE t1.Max_Total = t2.Max_Total
SET t1.
FROM Table1 t1 
JOIN Table2 t2 ON t1.Day = t2.Day AND t1.EmployeeId = t2.EmployeeId

如果您只在意获取组合结果集

SELECT t1.Day, t1.EmployeeId, t1.Total, t1.EmployeeName, t2.Max_Total
FROM Table1 t1 
LEFT JOIN Table2 t2 ON t1.Day = t2.Day AND t1.EmployeeId = t2.EmployeeId

有关LEFT JOIN更多信息,您可以学习本教程

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM