我在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组合在两个表中都是唯一的,应该以某种方式使用它从第二个表中提取值并将其添加到第一个表中。
有时第一个表可以有更多的值,有时是第二个,但第一个表将始终是需要被操作/添加的值。
任何提示都将受到赞赏。感谢
答案 0 :(得分:2)
您正在两个字段中寻找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 :(得分:1)
您需要分开任务。
Table1
以添加列Max_Total
UPDATE
个问题,以更新Max_Total
中的Table1
。<强>查询:强>
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
的更多信息,您可以学习this tutorial。