2012-04-12 71 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)的左側將其別名。