やりたいこと
MySQLを使ってテーブルのカラムのデータを入れ替えたい。
下記のarticleテーブルで、titleとcontentのカラムの中身を入れ替えてみる。
実行するSQL
.sql
UPDATE article SET title=CONCAT(title, ':', content),
content=SUBSTRING_INDEX(title, ':', 1),
title=SUBSTRING_INDEX(title, ':', -1);
*contentに:
が使われていないことを前提とする。
id=1で動きの説明をする。
①title=CONCAT(title, ':', content),
titleとcontentの間に':'の文字を挟んで結合。
->titleカラムはタイトル1:コンテンツ1
のようになる。
②content=SUBSTRING_INDEX(title, ':', 1),
contentカラムに①で連結した文字列の:
より前の文字列を取得させる。
->タイトル1
となる。
③title=SUBSTRING_INDEX(title, ':', -1);
titleカラムに①で連結した文字列の:
より後の文字列を取得させる。
->コンテンツ1
となる。