MySQL レコードを複製する方法

レコードを複製する方法をご紹介いたします。

 

 

こちらは、MySQLで書いていますが、他のSQLでもほとんど変わらずに利用できます。

$id部分には複製したいレコードのidをいれてください。

 

違うテーブルのレコード(行)を複製する。

 

INSERT INTO test SELECT * FROM test2 WHERE id= $id;

 

この場合は、簡単です。

この文では、testテーブルにtest2テーブルの指定したidと一致するデータを挿入しています。

 

同じテーブルのレコード(行)を複製する。

 

CREATE TEMPORARY TABLE tmp_test LIKE test;
INSERT INTO tmp_test SELECT * FROM test WHERE id= id ;
UPDATE tmp_test set id = (SELECT MAX(id) FROM test)+1;
INSERT INTO test SELECT * FROM tmp_test;

 

同じテーブルのレコードを複製する場合は、一度他のテーブルにデータを持って行ってやる必要があります。

上記の処理では、接続したセッションの間だけ存在するTMPPORARY TABLEを作成し、testテーブルのDDL(構造)のみをコピーしています。

その後、testテーブルのidと一致するレコードをtmp_testテーブルに挿入し、

idをtestテーブルの最大値より1増やしています。(idを主キーとしている場合、一意の値でないといけないため)

最後に、tmp_testテーブルのレコードをtestテーブルに追加しています。

 

コメントを残す

CAPTCHA