我正在尝试使用TableB中的记录更新TableA,但仅限于TableA中没有记录已存在且具有相同Name Column值的记录。我有查询会这样做,但是我想做的是在存在“匹配”记录但在Fieldx / y / z中没有值的情况下,现有记录将更新。例如:
目标表不会创建自“Bob”存在以来的新记录,但现有记录将添加New York和Doctor,因为这些字段为NULL或为空/
答案 0 :(得分:1)
您可以使用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));