【发布时间】:2016-12-05 18:19:50
【问题描述】:
我有两个数据库,testFrom 和 testTo。它们的目的是从testFrom 中获取选择列的值并覆盖testTo 中的相同列。两个数据库都在处理同名的表dbo.People。这两个数据库的记录数不同,因此传输不会是 1:1。因此,我正在处理一个查询,该查询更新存在的行的值,并为不存在的行插入剩余数据。
目前我的更新有效,但插入将添加具有空值的新行,而不是来自testFrom 的值。我不确定我哪里出错了,会不会是我插入的 join 语句?
UPDATE to_p
SET to_p.DottedID = from_p.DottedID, to_p.Name = from_p.Name, to_p.Colour = from_p.Colour, to_p.Food = from_p.Food
FROM testFrom.dbo.people to_p left join testTo.dbo.People from_p on to_p.Name = from_p.Name
WHERE from_p.Name IS NOT NULL;
INSERT INTO testTo.dbo.People (to_p.DottedID, to_p.Name, to_p.Colour, to_p.Food)
SELECT from_p.DottedID, from_p.Name, from_p.Colour, from_p.Food
FROM testFrom.dbo.people to_p left join testTo.dbo.People from_p on to_p.Name = from_p.Name
WHERE from_p.Name IS NULL;
输出如下
【问题讨论】: