MySQLで特定列だけ値を変えつつ複製する

Web App

テーブル内の特定列だけ変えつつ複数レコードをコピーしたいときはテンポラリーテーブルを使う。テンポラリーテーブルは一時テーブルのため、セッションが終わるとその役割を終え、自動的に破棄されて幸せになれる。

▼ テーブル 構造

▼ 元のデータ

eid = 1 のデータが 6 レコードある。この 6 レコードを eid = 2 としつつ複製したい。

id 列は auto increment 列なので注意が必要

▼ eid 1 のレコードを 2 としつつ複製したい

▼ MySQL の場合

CREATE TEMPORARY TABLE tmp (SELECT * FROM dashboard_card WHERE eid=1);
UPDATE tmp SET eid = 2, id = null;
INSERT INTO dashboard_card SELECT * FROM tmp;

id は auto increment 値なので null にしておく

id = null;

条件をつけたくなければ WHERE 句は不要

CREATE TEMPORARY TABLE tmp (SELECT * FROM dashboard);

コメント