我正在尝试使用连接从另一个数据库更新表并且很难。这就是我想用伪做的事情:
UPDATE [Database1].[dbo].[Sessions]
SET [SpeakerID] = ?STATEMENT1?
WHERE ?STATEMENT2?
对于“Statement1”,这将来自另一个具有列的数据库和表:SessionID和SpeakerID。如何实现这一目标?
答案 0 :(得分:2)
UPDATE a
SET a.SpeakerID = b.colName -- SET valoue here
FROM Database1.dbo.Sessions a
INNER JOIN Database2.dbo.Sessions b
ON a.SessionID = b.SessionID -- assumes that their
-- relationship column is SessionID,
-- change it in your original columnName
WHERE ....
a
和b
被称为别名。当您有更长的源名称时,它们非常有用。
答案 1 :(得分:0)
UPDATE L
SET SpeakerID = R.SpeakerID
FROM dbo.LocalTable AS L
INNER JOIN RemoteDatabase.dbo.RemoteTable AS R
ON L.SomeValue = R.SomeValue;
除了必须在连接中的一个表中添加数据库前缀之外,这与this problem没有什么不同。
答案 2 :(得分:0)
试
UPDATE [Database1].[dbo].[Sessions]
SET
Sessions.col1 = other_table.col1
FROM
[Database1].[dbo].[Sessions] Sessions
INNER JOIN
[Database2].[dbo].other_table AS other_table
ON
Sessions.id = other_table.id
WHERE Sessions.id = ??
请注意,如果数据库位于另一台服务器上,则需要先创建链接服务器