レコードを複製する方法をご紹介いたします。
こちらは、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テーブルに追加しています。