【问题标题】:MySQL: Update all Columns With Values From A Separate TableMySQL:使用单独表中的值更新所有列
【发布时间】:2009-09-28 19:22:49
【问题描述】:

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

INSERT INTO table2 SELECT * FROM table1 WHERE id = SOME_VALUE

如何在此语句中添加 ON DUPLICATE KEY UPDATE?我试过这个:

INSERT INTO SELECT * FROM table1 WHERE id = 1 重复键更新选择 * FROM table1 WHERE id = 1

但是我得到一个错误。是否可以在不单独列出查询中的每一列的情况下完成上述查询?

附:是的,我意识到拥有多个具有相同结构的表并不是一个好习惯,但有时您无法控制工作场所中的所有内容!

【问题讨论】:

  • 请显示表格的结构(或其相关部分,特别是不能重复的键的定义),以及可能的行示例。

标签: mysql select


【解决方案1】:

如果没有 PK 重复并且存在 INSERT,则以下更新:

REPLACE INTO table2(field1, field2, field3)
SELECT field1, field2,field3 FROM table1
WHERE id=1;

【讨论】:

  • 我会注意到这是一个非标准的 MySQL 扩展(这就是为什么它对我来说是新的)。
  • 实际上 REPLACE 会删除记录,然后插入新记录,因此如果您对任何内容使用时间戳,它将丢失
  • 但这确实回答了问题+1
【解决方案2】:

http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html 只需使用另一个表中的 SELECT field_name,就像在 dnagirls 示例中一样

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    • 2022-08-11
    • 1970-01-01
    • 2021-07-11
    相关资源
    最近更新 更多