【问题标题】:TSQL "multi-part identifier x could not be found" when updating fields in a temp table更新临时表中的字段时,TSQL“找不到多部分标识符 x”
【发布时间】:2015-09-21 17:33:52
【问题描述】:

我创建了一个这样的临时表:

SELECT 
    email_key, 
    Best_pn_ee_active_pbm, 
    Best_pn_ee_active_pbm_pub, 
    Best_pn_ee_active_pbm_status, 
    Best_pn_ee_inactive_pbm, 
    Best_pn_ee_inactive_pbm_pub, 
    Best_pn_ee_inactive_pbm_status
INTO #kjs_univ_sample
FROM view_univ_email

我随后添加了一些列以供稍后填充:

ALTER TABLE #kjs_univ_sample
ADD Best_pn_ee_active_pbm_my varchar(10), 
    Best_pn_ee_active_pbm_status_my varchar(10), 
    Best_pn_ee_active_pbm_pub_my varchar(10), 
    Best_pn_ee_inactive_pbm_my varchar(10), 
    Best_pn_ee_inactive_pbm_status_my varchar(10), 
    Best_pn_ee_inactive_pbm_pub_my varchar(10)

然后我尝试更新刚刚添加的字段:

UPDATE #kjs_univ_sample
SET 
    a.Best_pn_ee_active_pbm_my =        b.s_pbm_account_key, 
    a.best_pn_ee_active_pbm_pub_my =    b.s_pub_code,
    a.best_pn_ee_active_pbm_status_my = b.s_subscription_status
FROM #kjs_univ_sample as a
RIGHT JOIN #kjsemailcount as b ON a.email_key = b.email
WHERE a.email_key = b.email
  AND b.counted = '1'

问题是通过 ALTER 添加的所有 4 列都显示错误

'无法绑定多部分标识符“”。

我尝试在Update 行中使用别名“a”,但根本不使用别名。当我输入要更新的字段名称时,它会显示下拉列表,但ALTER 添加的字段都不存在。

就好像它没有看到它们一样。但是,Select * 将显示它们。有任何想法吗?

【问题讨论】:

  • 尝试在set 上省略a.
  • 我认为你想要一个LEFT 加入而不是RIGHT,而且你不需要在WHERE 子句中重复你的ON 子句。
  • 删除 a.不会改变任何东西。如果我使用 a.然后继续输入它会建议临时表中的所有其他字段,除了我想要的字段。好像它没有看到它们一样。
  • UPDATE #kjs... 更改为UPDATE a,并在ALTERUPDATE 之间添加一个GO。我怀疑这个错误只是一个编译时错误,因为 SSMS 试图用一个双关语来解析整个脚本 - GO
  • 我实际上是连续运行这些。 :(

标签: sql-server tsql sql-update alter


【解决方案1】:

此代码有效:

update #kjs_univ_sample 
set Best_pn_ee_active_pbm_my = b.s_pbm_account_key, 
best_pn_ee_active_pbm_pub_my = b.s_pub_code,
best_pn_ee_active_pbm_status_my = b.s_subscription_status
from #kjs_univ_sample as a
right join #kjsemailcount as b
on a.email_key = b.email
where a.email_key = b.email
and b.counted = '1'

我删除了 a.正如@Gordon-Linoff 之前所建议的那样。它没有删除警告消息,但它确实最终起作用了。

【讨论】:

  • 我更愿意为每个集合列保留a.,但将update #kjs_univ_sample 更改为update a
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多