1

SQL Server 2005を使用していて、同じ定義を持つが異なるデータベースに存在する2つのテーブルを同期したいと思います。MERGE INTOは2008年にのみ存在し、UPDATEで列を指定する必要がない構文を使用したいと思います。そこで、次の構文を使用してさまざまな投稿に遭遇しました。

UPDATE Destination FROM (Source INTERSECT Destination)
INSERT INTO Destination FROM (Source EXCEPT Destination)

しかし、それを実行しようとすると、次のようになります。

Incorrect syntax near the keyword 'FROM'.

どうすればこれを機能させることができますか?同期する必要のある複数のテーブルがあり、すべてのステートメントですべての列を指定したくありません。

ヒントをありがとう!

4

2 に答える 2

0

これで質問に答えられない場合は申し訳ありませんが、これが時間を節約するためであると仮定すると、ソーステーブルを右クリックしてINSERTスクリプトを生成し、右クリックして宛先テーブルを作成し、空白のSELECTスクリプトを生成してから、2つを組み合わせますか?これは、環境でキルアンドフィルが許容できる場合にのみ機能します。

于 2010-10-11T16:40:58.633 に答える
0

Books Onlineによると、updateコマンドにはキーワードが必要setであり、オプションのfromキーワードの前に配置する必要があります。insertコマンドにはスタンドアロンfromキーワードがなく、派生テーブルソースとして、または共通テーブル式内のステートメントfromの一部としてのみ存在します。select

参照しているリンクは、有効なSQLServer2005構文を示していません。

「これを機能させるにはどうすればよいですか?同期する必要のある複数のテーブルがあり、すべてのステートメントですべての列を指定したくありません。」

の場合update、すべての列を指定する必要があります。insertソースとデスティネーションの構造が同じである場合は、本番コードには推奨されないものを使用できますが、ソースまたはデスティネーションが変更されると、ステートメントが破損しますinsert into TARGTET_TABLE_NAME select * from SOURCE_TABLE_NAME ソースと宛先が異なる場合は、挿入の少なくとも片側に列を指定する必要があります。

于 2010-10-11T17:49:24.770 に答える