无法绑定多部分标识符 - 更新查询SQL Server 2005

时间:2010-09-15 13:11:15

标签: sql sql-server-2005 tsql

SQL Server新手。

UPDATE dbo.ObjectivesApproved  
SET dbo.ObjectivesApproved.VAP = 'Y'
WHERE ((dbo.Approved.Cri_Group In ('X01' ,'X02' ,'X03' ,'X04' ,'X05' ,'X07' ,'X08' ,'X09' ,'X10' ,'X11' ,'X12' ,'X13' ,'X14')))

给出以下错误

The multi-part identifier "dbo.Approved.Cri_Group" could not be bound.

导致错误的原因是什么?

更新:以上查询是试错的结果。我正在将访问应用程序更新到SQL服务器,并且在稍微不同的SQL方言上遇到了一些问题

这是我原来的查询。

UPDATE dbo.Approved 
INNER JOIN dbo.ObjectivesApproved ON dbo.Approved.ID = dbo.ObjectivesApproved.ID 
SET dbo.ObjectivesApproved.VAP = 'Y'
WHERE ((dbo.Approved.Cri_Group 
In ('X01' ,'X02' ,'X03' ,'X04' ,'X05' ,'X07' ,'X08' ,'X09' ,'X10' ,'X11' ,'X12' ,'X13' ,'X14')));

这会产生错误 - 关键字“INNER”附近的语法不正确

感谢

2 个答案:

答案 0 :(得分:5)

那会转化为

UPDATE
    OA
SET
    OA.VAP = 'Y'
FROM
    dbo.Approved AS A
    INNER JOIN dbo.ObjectivesApproved OA ON A.ID = OA.ID
WHERE
    A.Cri_Group IN ('X01' ,'X02' ,'X03' ,'X04' ,'X05' ,'X07' ,'X08' ,'X09' ,'X10' ,'X11' ,'X12' ,'X13' ,'X14')

答案 1 :(得分:1)

您没有指定更新也在任何地方使用Approved表,而是只使用其中的列。

另一方面,您的更新看起来也存在逻辑上的缺陷,因为您将更新ObjectivesApproved条记录而不管它们包含哪些内容,即ObjectivesApprovedApproved之间没有提及任何关系。