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

Web App

テーブル内の特定列だけ変えつつ複数レコードをコピーしたいときはテンポラリーテーブルを使う。

テンポラリーテーブルは一時テーブルのため、セッションが終わるとその役割を終え自動的に破棄されて幸せ。

▼ テーブル dashboard_card の構造

▼ カラム

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

id は auto increment

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

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);

コメント