有时如果我想快速将记录从一个表复制到另一个表(具有相同的结构),我会使用如下查询:
INSERT INTO table2 SELECT * FROM table1 WHERE id = SOME_VALUE
如何在此语句中添加ON DUPLICATE KEY UPDATE?我试过这个:
INSERT INTO SELECT * FROM table1 WHERE id = 1 ON DUPLICATE KEY UPDATE SELECT * FROM table1 WHERE id = 1
但是我收到了一个错误。有没有完成上面的查询而没有单独列出查询中的每一列?
P.S。是的,我意识到拥有多个具有相同结构的表并不是一个好习惯,但有时你只是无法控制工作场所中的所有内容!
答案 0 :(得分:1)
以下更新如果没有PK重复且INSERT有:
REPLACE INTO table2(field1, field2, field3)
SELECT field1, field2,field3 FROM table1
WHERE id=1;
答案 1 :(得分:1)
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html只需使用另一个表中的SELECT field_name,就像在dnagirls示例中一样