2017-08-08 13 views
-1

私は奇妙な問題があります。2列に基づいて列を更新

私は、2つのテーブルを持つかなり大きなデータベースを持っています。列の内容を名前から別のテーブルに既に存在するIDに変更する必要があります。

例:

I持っているコラム「名前」

名の欄には「姓」

 Name | othercolumn 
Smith, John | 

は、私が変更したい示されているように人々を持っているが含まれているテーブル名前列の内容を人名に関連付けられたstaffIDに追加します。

スタッフテーブルは

staffID | firstName | lastName 
    1   john  smith 

私の最終的な結果は

Name | othercolumn 
1 | 

あるべきである私が参加し、concatsのすべての種類を試してみたが、私の限られたとそれを得るように見えることはできませんmysqlの知識。手動でやることなくこれを行う方法はありますか?カンマは私に悲しみをたくさん与えるようです。ありがとう!

答えて

3

これには非常に注意する必要があります。まず、StaffIdが数字であると仮定します。だから、テーブルに列を追加します。

alter table t add StaffId int; 

を次に、このコラム更新:

:あなたがこれを行った後、あなたはまだ NULLある StaffId値を有することができることを

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

注意を

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

これらは、staffテーブルに含まれていない名前です。彼らはもっと仕事が必要です。完了したら、name列を削除できます。

関連する問題