我试图更新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));