MySQL:使用单独的表更新所有列

时间:2009-09-28 19:22:49

标签: mysql select

有时如果我想快速将记录从一个表复制到另一个表(具有相同的结构),我会使用如下查询:

  

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。是的,我意识到拥有多个具有相同结构的表并不是一个好习惯,但有时你只是无法控制工作场所中的所有内容!

2 个答案:

答案 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示例中一样