更新查询错误:无法绑定多部分标识符

时间:2016-07-28 06:13:24

标签: sql-server sql-server-2008 tsql

我正在尝试通过根据条件从另一个表设置其值来更新列。所以我做了以下几点: -

UPDATE 
    [dbo].MachineLog
SET 
    A.EmployeeId = B.EmployeeId 
FROM
    [dbo].MachineLog as A
INNER JOIN 
    [dbo].DeviceCode as B ON A.DeviceEnrollNo = B.DeviceEnrollNo
WHERE
    A.EmployeeId = 0 AND B.EmployeeId <> 0

我收到错误:

  

多部分标识符&#34; A.EmployeeId&#34;无法受约束。

如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

set子句中删除别名,并将表目标更改为别名。 我不确定为什么不可能使用from子句中set子句的别名,但可以在update子句中使用它。 也许其他人可以解释为什么会如此。

UPDATE 
    A
SET 
    EmployeeId = B.EmployeeId   
FROM
    [dbo].MachineLog as A
    INNER JOIN 
    [dbo].DeviceCode as B
    ON A.DeviceEnrollNo = B.DeviceEnrollNo
WHERE
    A.EmployeeId = 0 AND B.EmployeeId <> 0