Sql join,从第二个表中提取值并将其添加到第一个表中

时间:2016-08-16 20:13:44

标签: mysql sql

我在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组合在两个表中都是唯一的,应该以某种方式使用它从第二个表中提取值并将其添加到第一个表中。

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

任何提示都将受到赞赏。感谢

2 个答案:

答案 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)

您需要分开任务。

  1. 更改Table1以添加列Max_Total
  2. 撰写UPDATE个问题,以更新Max_Total中的Table1
  3. <强>查询:

    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