あるテーブルで、姓名カラムを2つ(姓:name_family、名:name_first)と分かれていたのが仕様変更となり、姓名のカラムを name カラム 1つに結合することになりました。
その際、既にインサートされているレコードの「姓」「名」を「姓 名」と全角スペース区切りで結合しつつアップデートする必要がありましたので、備忘録としてその方法をポストします。
Select結果でUpdateする
レコード例
以下の様なテーブルが有るとします。
上記レコードを、下の様にしたい場合の方法です。
Update と Concat
答えを書くと、以下のようになります。
| 1 2 3 4 5 | UPDATE      `profiles` AS tbl SET      tbl.name = CONCAT(tbl.name_family, ' ', tbl.name_first)  WHERE tbl.id = tbl.id; | 
あくまで Update文として書き、SET 句でどのカラムを持ってきて上書きするのかを指定します。
WHERE 句では単に同じ id で、という指定です。
文字列の結合には CONCAT を使用。
CONCAT(tbl.name_family, ‘ ’, tbl.name_first) とすることで「姓+全角スペース+名」を実現させます。
別テーブルの値でアップデートする場合
RequestテーブルのcolumnAを、OrderテーブルのcolumnBの値で上書きする
違うテーブルのレコードを持ってくる場合も以下のようにして実現可能。
requests と orders テーブルを例にしてみます。
| 1 2 3 4 5 6 7 | UPDATE      `requests` AS req,      `orders` AS ord  SET      req.columnA = ord.columnB  WHERE      req.id = ord.request_id; | 
なるほどですね。

 
         
         
         
         
         
         
         
         
         
         
         
         
         
         
  
  
  
  



