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;