2017-01-18 11 views
0

У меня есть две таблицы dim_distributor и distributor_variant.Я получаю несколько ошибок в SQL Server при попытке обновить столбец в одной таблице столбец для другого

Существует distributorvariantname столбца в distributor_variant и distributorname столбца в dim_distributor, которые должны содержать одинаковые значения между двумя столами.

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

Есть некоторые distributorid поля, которые установлены 0 в distributor_variant таблицы, и я хочу, чтобы обновить их одним и тем же distributorid значений в dim_distributor таблицы.

Существует также столбец distributorvariantid в distributor_variant, и я не хочу обновлять тот, который установлен на 0.

Ниже приведены два запроса, которые я написал, чтобы попытаться выполнить это.

Ниже запрос дает мне идентификатор в

Мульти-часть «dv.DistributorID» не может быть привязан.

Я проверил правописание, что мне здесь не хватает?

update distributor_variant 
set dv.distributorID = dd.distributorID 
from distributor_variant dv 
join dim_distributor dd on dd.distributorname = dv.distributorvariantname 
where dv.distributorID =0 and dv.distributorVariantID !=0 

Ниже запрос дает мне

Subquery вернулся более чем на 1 значение. Это недопустимо, если подзапрос следует за =,! =, <, < =,>,> = или когда подзапрос используется как выражение.

Я попытался перед круглыми скобками и получил неверный синтаксис перед ошибкой ключевого слова «в».

update distributor_variant 
set distributorID = (select dd.distributorID 
from dim_distributor dd, distributor_variant dv 
where dd.DistributorName = dv.distributorVariantName 
and dv.distributorID =0 and dv.distributorVariantID !=0) 

Что я делаю неправильно?

Любая помощь будет высоко оценена.

ответ

2

Обновление с помощью соединения требует некоторого странного синтаксиса. Вы должны сказать update <alias> (без фактического имени таблицы), прежде чем вы на самом деле указали, на что этот алиас действительно привязан. Попробуйте это вместо:

update dv 
set dv.distributorID = dd.distributorID 
from distributor_variant dv 
join dim_distributor dd 
on dd.distributorname = dv.distributorvariantname 
where dv.distributorID =0 and dv.distributorVariantID !=0 

 Смежные вопросы

  • Нет связанных вопросов^_^