0

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

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

对于“Statement1”,这将来自另一个具有以下列的数据库和表:SessionID 和 SpeakerID。如何做到这一点?

4

3 回答 3

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称为别名。当您有较长的源名称时,它们很有用。

于 2013-01-31T00:37:09.020 回答
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

于 2013-01-31T00:44:22.217 回答
0
UPDATE L
  SET SpeakerID = R.SpeakerID
  FROM dbo.LocalTable AS L
  INNER JOIN RemoteDatabase.dbo.RemoteTable AS R
  ON L.SomeValue = R.SomeValue;

这实际上与这个问题没有什么不同,只是您必须向联接中的一个表添加数据库前缀。

于 2013-01-31T00:36:44.310 回答