多部分标识符无法绑定更新列

Posted

技术标签:

【中文标题】多部分标识符无法绑定更新列【英文标题】:The multi-part identifier could not be bound update column 【发布时间】:2019-11-08 05:11:07 【问题描述】:
UPDATE country
SET country.postcode = (SELECT t.postcode
                        FROM Patch_Country t
                        WHERE t.Rows = 2 AND tll.id = t.id),
    country.state = (SELECT t.state
                     FROM Patch_Country t
                     WHERE t.Rows = 1 AND tll.id = t.id)
FROM country tla WITH (NOLOCK)
INNER JOIN country2 tll ON tla.id = tll.id
WHERE tll.code = tla.code

我尝试在仍然显示错误的行中添加内部联接我不确定为什么会显示此错误。

多部分标识符无法绑定

【问题讨论】:

这里您的查询返回 SELECT t.postcode FROM Patch_Country t WHERE t.Rows = 2 AND tll.id= t.id 多行,您首先检查或使用每个结果集 1 行。 如果您不了解它们的作用、不了解它们会导致什么问题并且没有任何明确的用途,请停止在代码中乱扔表格提示。 @ethan 。 . .您的查询没有任何先验错误(尽管它肯定有改进的余地)。如果无法绑定标识符,那是因为引用的表中不存在列,并且您的问题没有提供足够的信息来解决这个问题。样本数据和预期结果几乎总能让问题更清晰。 【参考方案1】:

你可以试试下面的:

UPDATE country
SET country.postcode = (CASE WHEN t.Rows = 2 THEN t.postcode END),
    country.state = (CASE WHEN t.Rows = 1 THEN t.state END)
FROM country tla 
INNER JOIN country2 tll ON tla.id = tll.id AND tll.code = tla.code
INNER JOIN Patch_Country t ON tll.id = t.id

【讨论】:

【参考方案2】:

我认为这个错误的问题是,你错误地使用了你的表格缩写

试试下面的代码

UPDATE country SET postcode = (SELECT t.postcode FROM Patch_Country t WHERE t.Rows = 2 AND tll.id = t.id), state = (SELECT t.state FROM Patch_Country t WHERE t.Rows = 1 AND tll.id = t.id) FROM country tla WITH (NOLOCK) INNER JOIN country2 tll ON tla.id = tll.id WHERE tll.code = tla.code

【讨论】:

select语句会提示错误。 tll.id 计数不受限制

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

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

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

无法绑定多部分标识符“alias.field”

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

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

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