从第二个数据库更新表列

时间:2012-08-01 15:52:39

标签: sql sql-server ssms

我已经按照其他帖子中的示例来实现此目的但是收到以下错误:

  

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]的{​​{1}}

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

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

3 个答案:

答案 0 :(得分:5)

您是否尝试过使用别名?

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

答案 1 :(得分:-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]

答案 2 :(得分:-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]