1

我已经按照其他帖子中的示例来实现这一点,但出现以下错误:

FROM 子句中的对象“otherDB.dbo.someTable”和“someDB.dbo.someTable”具有相同的公开名称。使用相关名称来区分它们。

这是 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]

从我在其他类似查询中看到的情况来看,这应该可以工作,但我想知道我是否需要做一些不同的事情,因为它来自不同的数据库?

非常感谢任何指针/帮助。

4

3 回答 3

5

您是否尝试过使用别名?

UPDATE db1
SET db1.[Name] = db2.[Name]
FROM [someDB].[dbo].[someTable] db1
INNER JOIN [otherDB].[dbo].[someTable] db2
   ON db1.[ID] = db2.[ID]
于 2012-08-01T15:58:46.793 回答
-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]
于 2012-08-01T16:00:50.937 回答
-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]
于 2012-08-01T15:56:54.810 回答