这个简单的UPDATE FROM查询中的错误在哪里?

时间:2012-04-12 19:45:39

标签: sql sql-server tsql

这应该非常简单,但我想要做到这一点,因为我正在对一个实时数据库进行更改(它已备份)。

我从CSV文件中导入了一些列值到数据库表。

现在我只想从导入的源表(查询中的S)更新目标表(查询中的T)。

我收到错误:The multi-part identifier "T.account_manager_id" could not be bound.

update DADatabaseMarch2012.dbo.Campaign

set 
    T.[account_manager_id]=S.[account_manager_id]
   ,T.[campaign_status_id]=S.[campaign_status_id]
   ,T.[ad_manager_id]=S.[ad_manager_id]
   ,T.[advertiser_id]=S.[advertiser_id]
from 
    [zMarch12CampaignsRestore].[dbo].[March12Eom_Campaigns] S
    inner join DADatabaseMarch2012.dbo.Campaign T ON S.id = T.id

3 个答案:

答案 0 :(得分:6)

以这种方式编写,使用别名作为UPDATE的目标。

update T

set 
    [account_manager_id]=S.[account_manager_id]
   ,[campaign_status_id]=S.[campaign_status_id]
   ,[ad_manager_id]=S.[ad_manager_id]
   ,[advertiser_id]=S.[advertiser_id]
from 
    [zMarch12CampaignsRestore].[dbo].[March12Eom_Campaigns] S
    inner join DADatabaseMarch2012.dbo.Campaign T ON S.id = T.id

答案 1 :(得分:4)

由于T是目标表,因此您不必在赋值(SET)的左侧对其进行别名。

答案 2 :(得分:1)

编辑:您需要在更新中引用与子句中相同的表。写“更新T”。