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