Sql server 更新临时表中的字段时TSQL“找不到多部分标识符x”

Sql server 更新临时表中的字段时TSQL“找不到多部分标识符x”,sql-server,tsql,sql-update,alter,Sql Server,Tsql,Sql Update,Alter,我创建了一个临时表,如下所示: 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_s

我创建了一个临时表,如下所示:

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列都显示了错误

'无法绑定多部分标识符

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

就好像它看不到他们一样。但是,选择*将显示它们。有什么想法吗

此代码有效:

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。在集合中。我认为您需要左连接而不是右连接,并且不需要在WHERE子句中重复on子句。删除a。不会改变任何事情。如果我用a。然后继续输入,它会提示临时表中除我想要的字段以外的所有其他字段。好像它看不到它们。更改更新kjs。。。更新,并在ALTER和更新之间进行切换。我怀疑这个错误只是一个编译时错误,因为SSMS试图用一个双关语来解析整个脚本。我实际上是在一个时间序列中运行这些脚本我宁愿离开a。在每个集合列的适当位置,但将更新kjs_univ_样本更改为更新a。