結合を使用して別のデータベースからテーブルを更新しようとしていますが、苦労しています。これは私が疑似でやろうとしていることです:
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 L
SET SpeakerID = R.SpeakerID
FROM dbo.LocalTable AS L
INNER JOIN RemoteDatabase.dbo.RemoteTable AS R
ON L.SomeValue = R.SomeValue;
これは、結合内のテーブルの1つにデータベースプレフィックスを追加する必要があることを除いて、この問題と実際には違いはありません。
試す
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 = ??
データベースが別のサーバー上にある場合は、最初にリンクサーバーを作成する必要があることに注意してください