0

MySQL では、いくつかのレコードを複製したいのですが、多数の列があるため、テーブルのすべての列名を挿入にリストしたくありません。ON DUPLICATE KEY 句を指定して INERT INTO を実行しようとしましたが、うまくいきませんでした。最初にレコードを一時テーブルにコピーしています。セットアップは次のようになります。

CREATE TABLE copy_of_test LIKE test;
INSERT INTO copy_of_test SELECT * FROM test WHERE some_column IN (@X, @Y, @Z);
UPDATE copy_of_test SET some_other_column = @NewValue;
INSERT INTO test SELECT * FROM copy_of_test
ON DUPLICATE KEY UPDATE test.idTest = last_insert_id(test.idTest);

最後の INSERT は次のように表示されます。

クエリ OK、影響を受ける行は 0 (0.00 秒) レコード: 3 重複: 0 警告: 0

しかし、テストに挿入されるレコードはありません。このクエリの他のさまざまなバージョンを試しましたが、構文または列名のあいまいさに関するエラー メッセージしか表示されませんでした。私は何が欠けていますか?

私が本当に欲しいのは次のようなものです:

INSERT INTO test SELECT * FROM copy_of_test
ON DUPLICATE KEY AUTO_INCREMENT test PRIMARY KEY;
4

1 に答える 1