データを引き継ぐSQL文

個人的なメモ

create table setting_tbl(
user_id text,
target text,
use_flg smallint
);

※use_flg: 0 or 1
mysqlでテスト

例えば、上記のようなテーブルがあったとして、あるユーザ(デフォルトユーザ)のデータが、以下のように登録されているとします。

user_id | target | use_flg

                                                                  • -

default_user | analytis | 0
default_user | calendar | 0
default_user | category | 1
default_user | profile | 1

新規ユーザ追加時にデフォルトユーザの設定情報を引き継ぎたい場合にどうするか?


以下のようなSQL文で、デフォルトユーザのデータを引き継ぎつつ、user_idを明示的に設定することができる。

insert into setting_tbl select 'user_a' as user_id, target, use_flg from setting_tbl where user_id = 'default_user';


実行すると、以下のような結果になる。

user_id | target | use_flg

                                                                  • -

default_user | analytis | 0
default_user | calendar | 0
default_user | category | 1
default_user | profile | 1
user_a | analytis | 0
user_a | calendar | 0
user_a | category | 1
user_a | profile | 1

できた!