我正在尝试使用连接从另一个数据库更新表并且遇到困难。这就是我在伪中尝试做的事情:
UPDATE [Database1].[dbo].[Sessions]
SET [SpeakerID] = ?STATEMENT1?
WHERE ?STATEMENT2?
对于“Statement1”,这将来自另一个具有以下列的数据库和表:SessionID 和 SpeakerID。如何做到这一点?
我正在尝试使用连接从另一个数据库更新表并且遇到困难。这就是我在伪中尝试做的事情:
UPDATE [Database1].[dbo].[Sessions]
SET [SpeakerID] = ?STATEMENT1?
WHERE ?STATEMENT2?
对于“Statement1”,这将来自另一个具有以下列的数据库和表:SessionID 和 SpeakerID。如何做到这一点?
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
称为别名。当您有较长的源名称时,它们很有用。
尝试
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 = ??
请注意,如果数据库在另一台服务器上,您需要先创建链接服务器
UPDATE L
SET SpeakerID = R.SpeakerID
FROM dbo.LocalTable AS L
INNER JOIN RemoteDatabase.dbo.RemoteTable AS R
ON L.SomeValue = R.SomeValue;
这实际上与这个问题没有什么不同,只是您必须向联接中的一个表添加数据库前缀。