0

すべての値が別のデータベースの別のテーブルと同一になるようにテーブルを更新しようとしています。挿入コマンドでは実行できますが、更新コマンドでは実行できません。

これは機能します:

INSERT [test1].[dbo].[table1]
    SELECT * FROM [source].[dbo].[table1]

これはしません:

UPDATE [test2].[dbo].[table1] 
SET [source].[dbo].[table1] = [test2].[dbo].[table1]

これも:

UPDATE [test2].[dbo].[table1]
SET 
     [test2].[dbo].[table1].[PKcolumn] = [source].[dbo].[table1].[PKcolumn]
    ,[test2].[dbo].[table1].[column2] = [source].[dbo].[table1].[column2] 
    ,[test2].[dbo].[table1].[column3] = [source].[dbo].[table1].[column3] 

WHERE
    [source].[dbo].[table1].[PKcolumn] = [test2].[dbo].[table1].[PKcolumn]

結果は、エラーを数え切れないほどチェックしているにもかかわらず、常にこのエラーメッセージのバリエーションになります。

メッセージ4104、レベル16、状態1、行1

マルチパート識別子「source.dbo.table1.PKColumn」をバインドできませんでした。

助言がありますか?

4

2 に答える 2

0

1つのテーブルにしか影響しないためupdate、指定する必要はありません。

UPDATE dest
SET    column2 = src.column2
FROM   source.dbo.table1 as src
JOIN   test2.dbo.table1 as dest
on     dest.PKcolumn = src.PKcolumn

PS使用しているデータベースによっては、MERGEステートメントを確認することをお勧めします。

于 2012-07-27T18:20:50.130 に答える
0

FROM句がありません(更新句で複数のテーブルを使用しているため)これを確認してください:http ://scottonwriting.net/sowblog/archive/2010/07/13/howto-update-records-in-a- database-table-with-data-from-another-table-ms-sql-server.aspx

これを試して:

UPDATE [test2].[dbo].[table1]
SET 
     [test2].[dbo].[table1].[PKcolumn] = [source].[dbo].[table1].[PKcolumn]
    ,[test2].[dbo].[table1].[column2] = [source].[dbo].[table1].[column2] 
    ,[test2].[dbo].[table1].[column3] = [source].[dbo].[table1].[column3] 
FROM [source].[dbo].[table1] JOIN [test2].[dbo].[table1]
ON
    [source].[dbo].[table1].[PKcolumn] = [test2].[dbo].[table1].[PKcolumn]
于 2012-07-27T18:21:41.977 に答える