others - 什么是'multi-part identifier',为什么不能绑定?

当我尝试基于另一个表更新表时,我不断得到这些错误。




在什么情况下发生此错误?
什么是预防它的最佳方法?

来自SQL Server 2005的特定错误是:


The multi-part identifier "..." could not be bound.

时间:

实际上,当你从另一个表中更新一个表时,我认为这会导致错误的一个常见问题,下面是正确的语句:


Update Table1
Set SomeField = t2.SomeFieldValue 
From Table1 t1 
Inner Join Table2 as t2
 On t1.ID = t2.ID

请注意,表0中的SomeField列不表示t1.SomeField ,如果你尝试更新t1.SomeField语句语句将返回multi-part错误。

更新表时,请确保未通过别名引用更新字段。

以下是错误的代码


update [page] 
set p.pagestatusid = 1
from [page] p
join seed s on s.seedid = p.seedid
where s.providercode = 'agd'
and p.pagestatusid = 0

我必须删除set语句中的别名引用,以便它像这样,


update [page] 
set pagestatusid = 1
from [page] p
join seed s on s.seedid = p.seedid
where s.providercode = 'agd'
and p.pagestatusid = 0

当我尝试缩写时,我发现我得到了很多错误,例如:


Table1 t1, Table2 t2 
where t1.ID = t2.ID

将它改为:


Table1, Table2 
where Table1.ID = Table2.ID

查询可以工作了,而不会引发错误。

...