LoginSignup
0
0

More than 3 years have passed since last update.

SQLのUPDATEでカラムの内容を移動させる

Posted at

1つのカラムに複数の情報が混在していた

articlesテーブルのmediaカラムに、画像のパスやyoutubeのリンク情報が混在していたので、youtubeカラムを追加して、youtubeのリンク情報だけ移せないか試してみました。

// 変更前

|id | media                 | youtube |
|:-:|:---------------------:|:-------:|
| 1 |{"img":"//s3-ap-J***"} |NULL     |
| 2 |{"youtube":"NnH*****"} |NULL     |
| 3 |{"img":"//s3-ap-I***"} |NULL     |


// 変更後

|id |media                  |youtube                |
|:-:|:---------------------:|:---------------------:|
| 1 |{"img":"//s3-ap-J***"} |NULL                   |
| 2 |NULL                   |{"youtube":"NnH*****"} |
| 3 |{"img":"//s3-ap-I***"} |NULL                   |

要件

  1. mediaカラムの内、"youtube"の文字列があるセルをyoutubeカラムにコピー
  2. mediaカラムの内、"youtube"の文字列があるセルをNULLに書き換える

成功したSQL文

UPDATE articles A SET A.youtube = A.media, A.media = null WHERE A.media LIKE '%youtube%'

おわり

SET句で同一カラムの変更(情報のコピーとNULLへの書き換え)を同時に書いてますが、順番通りに実行されたようで一安心です。
ただ、今回は件数が少なかっただけで、何万件ものレコードの書き換えがあった場合にどうなるかはわからないです( ˘ω˘ )。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0