[英]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
。 您可以根据需要生成数据。 但是,为了使更新生效,您需要先在表中添加一列,然后再对其进行更新。
您需要分离任务。
Table1
以添加列Max_Total
UPDATE
查询以更新Table1
的Max_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.