使用连接从另一个更新数据库?

时间:2013-01-31 00:31:40

标签: sql sql-server sql-server-2008 tsql

我正在尝试使用连接从另一个数据库更新表并且很难。这就是我想用伪做的事情:

UPDATE [Database1].[dbo].[Sessions]
   SET [SpeakerID] = ?STATEMENT1?
 WHERE ?STATEMENT2?

对于“Statement1”,这将来自另一个具有列的数据库和表:SessionID和SpeakerID。如何实现这一目标?

3 个答案:

答案 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   ....

ab被称为别名。当您有更长的源名称时,它们非常有用。

答案 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 = ??

请注意,如果数据库位于另一台服务器上,则需要先创建链接服务器

http://msdn.microsoft.com/en-us/library/ff772782.aspx