使用相同的名称记录从源表更新目标表中的记录



我试图更新TableA与TableB的记录,但只有在TableA中没有记录已经存在相同的名称列值。我有查询,将做到这一点,但我想做的是在一个"匹配"的记录存在的情况下,但没有值在Fieldx/y/z现有的记录将更新。例如:

  • 目标表| Bob | NULL| NULL|
  • 来源表| Bob | New York | Doctor

Target表将不会创建新记录,因为'Bob'已经存在,但是已经存在的记录将添加new York和Doctor,因为这些字段是NULL或空的/

您可以将on duplicate key update选项设置为insert。首先在name上创建一个唯一索引,因此不允许重复:

create unique index TargetTable_name on TargetTable(name);

:

insert into TargetTable(name, col1, col2)
    select name, col1, col2
    from SourceTable
    on duplicate key update col1 = coalesce(TargetTable.col1, values(col1)),
                            col2 = coalesce(TargetTable.col2, values(col2));

相关内容

  • 没有找到相关文章

最新更新