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;
由于四个其他列没有被更改的唯一键,所以这已变得没有意义,因此它们违反了唯一性。 – dokhebi
好的,是的。你是对的 - 第二个版本不会工作。 –