Engineer's stairs

エンジニアの階段

未分類

MySQL レコードを複製する

投稿日:

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

 

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

 

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

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

この場合は、簡単です。

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

 

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

$sql = ” 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テーブルに追加しています。

 

-未分類

Copyright© エンジニアの階段 , 2019 All Rights Reserved Powered by STINGER.