协助 SQL 查询 - 无法绑定多部分标识符

Posted

技术标签:

【中文标题】协助 SQL 查询 - 无法绑定多部分标识符【英文标题】:Assistance on a SQL Query - The multi-part identifier could not be bound 【发布时间】:2009-05-15 02:56:08 【问题描述】:

我正在尝试在同一个查询中进行子选择和内部联接,但收效甚微。

查询如下,并返回错误

多部分标识符 “Company.LocalityId”不能是 绑定。

UPDATE Company
SET
    Company.BusinessRegionId = b.Id
FROM 
(
    SELECT
        Id
      FROM
        BusinessRegion
      WHERE
        tag = 'Australia/New South Wales'
) b
INNER JOIN Locality l ON 
    Company.LocalityId = l.Id
where 
    l.StateOrProvinceAbbreviation = 'NSW'

我们将不胜感激。

【问题讨论】:

【参考方案1】:

您的 BusinessRegion 和 Locality 表根本没有真正加入该查询,对吗?你可以这样做吗?

UPDATE Company
SET BusinessRegionId = (
    SELECT TOP 1 Id
    FROM BusinessRegion
    WHERE Tag = 'Australia/New South Wales')
FROM Locality l
WHERE l.Id = LocalityId AND l.StateOrProvinceAbbreviation = 'NSW'

【讨论】:

谢谢,有道理,我有点太冗长了:)【参考方案2】:

这是查询的变体:

UPDATE 
   c
SET
    c.BusinessRegionId = 
    (
      SELECT TOP 1
        Id
      FROM
        BusinessRegion
      WHERE
        tag = 'Australia/New South Wales'
    )
FROM 
   Company c
   INNER JOIN Locality l ON c.LocalityId = l.Id
WHERE
    l.StateOrProvinceAbbreviation = 'NSW'

【讨论】:

实际上我自己也选择了这个(更容易看到连接中发生了什么),但正是马特的建议让我越过了这条线

以上是关于协助 SQL 查询 - 无法绑定多部分标识符的主要内容,如果未能解决你的问题,请参考以下文章

SQL 错误:无法绑定多部分标识符

Crystal Reports中的“多部分标识符无法绑定”与SQL表达式/子查询

SQL 错误 - 无法绑定多部分标识符“CF.OBJ”

无法绑定多部分标识符 - 子查询

无法在 SQL Server 2008 上绑定多部分标识符

无法绑定多部分标识符“p.ProductID”