2012-04-12 72 views
0

这应该是非常简单的,但我希望得到这个权利,因为我正在对活动数据库进行更改(它已备份)。这个简单的UPDATE FROM查询中的错误在哪里?

我从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 
+0

可能的重复[如何使用表中的变量在“从select更新”查询?](http://stackoverflow.com/questions/8535362/how-to-use-a-table-variable-in-从选择查询中更新) – JonH 2012-04-12 19:50:58

+0

不一样的查询,但相同类型的问题。在更新语句中使用别名。 – JonH 2012-04-12 19:51:14

回答

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 
+0

这真的有用吗?我认为update子句需要引用与from子句完全相同的表。看到我的答案。 – usr 2012-04-12 19:51:35

+0

很好!谢谢.. – 2012-04-12 19:53:22

+0

@usr yes yes it works。如果您在'UPDATE'中为表格别名,则必须指定**别名**作为目标 – JNK 2012-04-12 19:54:07

1

编辑:您需要from子句引用同一个表中的更新为你。写“更新T”。

+0

我认为S应该在这里..我会编辑... – 2012-04-12 20:04:18

4

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