在 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 将显示:
查询正常,0 行受影响(0.00 秒)记录:3 重复:0 警告:0
但是没有记录插入到测试中。我尝试了此查询的各种其他版本,但只收到有关语法或列名歧义的错误消息。我错过了什么?
我真正想要的是这样的:
INSERT INTO test SELECT * FROM copy_of_test
ON DUPLICATE KEY AUTO_INCREMENT test PRIMARY KEY;