簡體   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