У меня есть две базы данных, 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 строк, которые, когда я исполняю после рекомендуемого изменения – BlueBarren
@BlueBarren, да ошибся. См. Редактирование в ответ, если это помогает. – Rahul
Да, это более или менее работает спасибо. Теперь у меня есть только одна старая запись, хотя – BlueBarren