Обновите столбец CarValue в месте назначения на основе исходного carValue - PullRequest
0 голосов
/ 29 октября 2019

У меня есть таблица назначения, которая должна быть обновлена ​​со значениями, которые соответствуют из моего источника. Я бы хотел, чтобы у моего пункта назначения было то же CarValue, что и у моей исходной таблицы. Я пришел с запросом выше, чтобы извлечь записи, которые не соответствуют моему источнику, и я хочу использовать это, чтобы обновить мои значения таблицы назначения. Пожалуйста, приведите примеры того, как это сделать.

  select
      s.*
      ,t.*
  from SourceTable as s
  full outer join DestinationTable as t
    on s.CarNo = t.CarNo and s.CarName = t.CarName
   where s.CarValue <> t.Carvalue

Ответы [ 2 ]

0 голосов
/ 29 октября 2019

Вам не нужно full join. Итак:

update t
    set carvalue = s.carvalue
    from DestinationTable t join
         SourceTable s
         on s.CarNo = t.CarNo and s.CarName = t.CarName
     where s.CarValue <> t.Carvalue;

Это не обновляет несовпадающие строки. Я думаю, что вы хотите оставить тех, кто в покое. Если вы хотите обновить их, используйте left join и удалите предложение where.

0 голосов
/ 29 октября 2019

Вы можете обновить, используя текущий оператор соединения.

update t
    set t.CarValue = s.Carvalue
   from DestinationTable as t       
   full outer join SourceTable as s
     on s.CarNo = t.CarNo and s.CarName = t.CarName
  where s.Carvalue<>coalesce(t.Carvalue,'xYz');

coalesce() добавлено для вероятности существования значений null в пределах DestinationTable, предполагая, что значение автомобиля никогда не будет xYz.

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...