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 L
  SET SpeakerID = R.SpeakerID
  FROM dbo.LocalTable AS L
  INNER JOIN RemoteDatabase.dbo.RemoteTable AS R
  ON L.SomeValue = R.SomeValue;

これは、結合内のテーブルの1つにデータベースプレフィックスを追加する必要があることを除いて、この問題と実際には違いはありません。

于 2013-01-31T00:36:44.310 に答える
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 に答える