2012-08-01 85 views
1

我已經按照從其他張貼的例子來實現這一點,但我得到了以下錯誤:更新表列

The objects "otherDB.dbo.someTable" and "someDB.dbo.someTable" in the FROM clause have the same exposed names. Use correlation names to distinguish them.

這裏的SQL語句

UPDATE [someDB].[dbo].[someTable] 
SET [someDB].[dbo].[someTable].[Name] = [otherDB].[dbo].[someTable].[Name] 
FROM [someDB].[dbo].[someTable] 
INNER JOIN [otherDB].[dbo].[someTable] 
    ON [someDB].[dbo].[someTable].[ID] = [otherDB].[dbo].[someTable].[ID] 

正如你所看到的,我簡單地想更新[Name][someBD].[someTable][otherDB].[someTable]

從我能看到在其他類似的查詢,這應該工作,但我想知道我是否需要做一些不同的事情,因爲它來自不同的數據庫?

任何指針/非常讚賞。

+0

如果這個數據庫在同一個服務器實例上,你應該沒問題。 – JeffO 2012-08-01 16:06:13

回答

5

您是否嘗試過使用別名?

UPDATE db1 
SET db1.[Name] = db2.[Name] 
FROM [someDB].[dbo].[someTable] db1 
INNER JOIN [otherDB].[dbo].[someTable] db2 
    ON db1.[ID] = db2.[ID] 
+0

使用db作爲表的別名有點令人誤解,但語法正確,+1,現在你得到的分數比我整天得到的還多。 – 2012-08-01 16:05:19

+0

@ t-clausen.dk我同意但我選擇它來顯示數據庫之間的區別。 – Taryn 2012-08-01 16:06:51

+0

太棒了,我不知道 - 非常感謝:-) – JustinReid 2012-08-01 16:14:11

-1

嘗試使用別名:

UPDATE 
[someDB].[dbo].[someTable] 
SET 
s.[someDB].[dbo].[someTable].[Name] = o.[otherDB].[dbo].[someTable].[Name] 
FROM 
[someDB].[dbo].[someTable] s 
INNER JOIN 
[otherDB].[dbo].[someTable] o 
ON 
s.[someDB].[dbo].[someTable].[ID] = o.[otherDB].[dbo].[someTable].[ID] 
+0

Humm我的別名有什麼問題? – 2012-08-03 13:00:37

-1

嗯,錯誤消息是要求相關名稱。我認爲這意味着它希望你別名表名之一。試試這個:

UPDATE [someDB].[dbo].[someTable] 
SET [someDB].[dbo].[someTable].[Name] = T.[Name] 
FROM [someDB].[dbo].[someTable] 
INNER JOIN [otherDB].[dbo].[someTable] T 
    ON [someDB].[dbo].[someTable].[ID] = T.[ID]