1. ホーム
  2. mysql

[解決済み] 同じMySQLテーブル内のレコードを複製/コピーする

2023-05-08 15:51:30

質問

ずっと探しているのですが、簡単な解決策が見つかりません。私はテーブルのレコードを複製したいのですが、もちろん、ユニークな主キーは更新される必要があります。

私はこのクエリを持っています。

INSERT INTO invoices
    SELECT * FROM invoices AS iv WHERE iv.ID=XXXXX
    ON DUPLICATE KEY UPDATE ID = (SELECT MAX(ID)+1 FROM invoices)

を変更するだけであることが問題です。 ID を変更するだけであることです。誰かこれを修正する方法を知っていますか?

//edit: フィールド名は時間の経過とともに変わる可能性があるので、すべてのフィールド名を入力せずにこれを行いたいと思います。

どのように解決するのですか?

私が通常行っている方法は、一時テーブルを使用することです。 それはおそらく計算上効率的ではありませんが、それは大丈夫だと思われる!私は、レコード99を完全に複製し、レコード100を作成します。ここでは、レコード99を丸ごと複製して、レコード100を作成しています。

CREATE TEMPORARY TABLE tmp SELECT * FROM invoices WHERE id = 99;

UPDATE tmp SET id=100 WHERE id = 99;

INSERT INTO invoices SELECT * FROM tmp WHERE id = 100;

これでうまくいくといいのですが。