我有两个数据库,testFrom
和testTo
。它们的目的是从testFrom
中获取选择列的值,并覆盖testTo
中的相同列。两个数据库都在处理同名的表dbo.People
。这两个数据库的记录数量不同,因此传输不会为1:1。因此,我正在处理一个查询,该查询更新存在的行的值,并为那些不存在的行插入剩余的数据。
目前我的更新有效,但插入内容会添加包含空值而不是testFrom
值的新行。我不确定我哪里出错了,可能是我插入的加入声明吗?
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;
输出如下
答案 0 :(得分:1)
您正在从错误的表格中选择列。更改您的INSERT
语句,如下所示
INSERT INTO testTo.dbo.People (DottedID, Name, Colour, Food)
SELECT to_p.DottedID, to_p.Name, to_p.Colour, to_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;