【问题标题】:mysql replace table data from another table when condition is metmysql 在满足条件时从另一个表中替换表数据
【发布时间】:2012-03-13 04:24:17
【问题描述】:

我正在为 Wordpress 多站点安装开发数据库,​​需要将多个字段(但不是全部)从一个表复制到另一个表中,替换现有内容和/或添加不存在的行。

其他地方也有类似的答案,但我似乎无法弄清楚。

表是源表和目标表

列是 option_name 和 option_value

基本上,如果 option_name field = condition1 存在于 targettable 中,则从 sourcetable 复制 option_value 字段并替换 targettable option_value 字段,如果不存在则添加它

想用一个查询更新/替换多个字段

REPLACE or UPDATE option_value_field in targettable with data 
from sourcetable value_field 
where name_field equals "condition1"

REPLACE or UPDATE option_value_field in targettable with data 
from sourcetable value_field 
where name_field equals "condition2"

REPLACE or UPDATE option_value_field in targettable with data 
from sourcetable value_field
where name_field equals "condition3" (add if does not exist)

谢谢

【问题讨论】:

    标签: mysql


    【解决方案1】:

    使 option_name 字段唯一,并使用 INSERT...ON DUPLICATE KEY UPDATE 语句插入/替换 targettable 中的值 -

    INSERT INTO targettable
    SELECT * FROM sourcetable
    ON DUPLICATE KEY UPDATE option_value = VALUES(option_value)
    

    【讨论】:

    • 嗨 - 感谢@Devart 的回复,但我不确定我是否理解如何让它工作。当您说“使 option_name 字段唯一”时——它是如何工作的?那是我在哪里/如何分配条件吗?我不想替换所有字段,只用 options_name = "condition value" 替换少数字段,如果目标表没有该值,则添加它。
    猜你喜欢
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    相关资源
    最近更新 更多