2017-08-08 126 views
-1

我有一個奇怪的問題。基於兩列的更新列

我有一個相當大的數據庫與兩個表。我需要將列的內容從名稱更改爲另一個表中已存在的ID。

例子:

我有一個包含一列「名稱」

名稱列具有人「姓氏,名字」,如圖

 Name | othercolumn 
Smith, John | 

我想換一個表名稱列的內容添加到與人員名稱關聯的staffID。

工作人員表

staffID | firstName | lastName 
    1   john  smith 

我的最終結果應該是

Name | othercolumn 
1 | 

我已經試過各種連接和concats的,但似乎無法與我限於它弄下來mysql的知識。有沒有辦法做到這一點,而不必手動做到這一點?逗號似乎給了我很多悲傷。謝謝!

回答

3

你需要對此非常小心。首先,我假設StaffId是一個數字。因此,一列添加到表:

alter table t add StaffId int; 

然後,更新此列:

update t join 
     staff s 
     on t.name = concat_ws(',', s.lastname, s.firstname) 
    set t.StaffId = s.StaffId; 

注意,你已經這樣做了之後,你可能仍然有StaffId值是NULL

select t.* 
from t 
where t.StaffId is null; 

這些是不在staff表中的名稱。他們需要更多的工作。完成後,您可以刪除name列。