Sql server 当尝试用一列更新一个表中的一列时,我在SQL Server中收到多个错误

Sql server 当尝试用一列更新一个表中的一列时,我在SQL Server中收到多个错误,sql-server,join,sql-update,subquery,Sql Server,Join,Sql Update,Subquery,我有两个表dim\u distributor和distributor\u variant 在distributor\u variant中有一个distributor variant name列,在dim\u distributor中有一个distributor name列,这两个表之间应该包含相同的值 两个表都有一个distributorid列,该列应包含两个表之间相同的值 在distributor\u variant表中有一些distributorid字段设置为0,我想将它们更新为dim\u

我有两个表
dim\u distributor
distributor\u variant

distributor\u variant
中有一个
distributor variant name
列,在
dim\u distributor
中有一个
distributor name
列,这两个表之间应该包含相同的值

两个表都有一个
distributorid
列,该列应包含两个表之间相同的值

distributor\u variant
表中有一些
distributorid
字段设置为
0
,我想将它们更新为
dim\u distributor
表中相同的
distributorid

distributor\u variant
中还有一个
distributor variantid
列,我不想更新设置为
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
下面的问题给了我答案

子查询返回了多个值。这是不允许的,因为 子查询后面是=,!=,=或者当子查询用作 表情

我尝试在括号前插入,但在关键字“in”错误前收到了不正确的语法

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)
我做错了什么


任何帮助都将不胜感激。

使用连接更新需要一些奇怪的语法。您必须先说
update
(没有实际的表名),然后才能实际说明别名实际上与什么相关。请尝试以下方法:

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

使用联接更新需要一些奇怪的语法。您必须先说
update
(没有实际的表名),然后才能实际说明别名实际上与什么相关。请尝试以下方法:

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