これはStackOverflowへの最初の投稿です。私はこの驚くべきリソースを何百年にもわたって何百ものSQLとPowerShellの質問に答えてきましたが、これは私に数日間困惑しています。SQL Update複数のテーブルを結合する(フィールドが存在する場合)
SQL Server 2014 SP2を使用していますが、DATABASE1、FIELD1、FIELD2、FIELD3の更新を複数の他のデータベースから実行しようとしています。
FIELD1は他の複数のデータベースのいずれかに存在する可能性があります。 FIELD1はすべてのデータベースに存在しない可能性があります。問題が発生している場所です。
私は(匿名の)次のクエリを持っており、それが動作するように表示されます。私はそれがDATABASE1ではなく、データベース2に存在しているとして、FIELD8を言ってもらうまで
EXEC sp_MSforeachdb 'IF ''?'' IN (''DATABASE2'',''DATABASE3'',''DATABASE4'')
BEGIN
UPDATE DATABASE1.PARAMETER
SET B.[VALUE] = A.[FIELD1]
FROM DATABASE1.TABLE1 B
INNER JOIN ?.dbo.[TABLE2] A
ON A.JOINVALUE = B.JOINVALUE
WHERE B.COLUMN2 = ''SOMETHING''
AND COLUMN3= ''PF.T.FIELD1''
END ;'
、DATABASE3かDATABASE4。私は本当に苦労し始めたところ
IF EXISTS (SELECT COLUMN1 FROM Database2.Table2 WHERE Column1='Field8')
EXEC .......
しかし、それはです:私は次のエラーを取得:私のGoogleとのStackOverflow検索から
Msg 207, Level 16, State 1, Line 30
Invalid column name 'FIELD8'.
を、私は(初めて)を使用しようとしました。
上記が意味をなさないことを望みます。 ヒントやご協力をいただければ幸いです。
N.B.データベース1には更新が必要な約3000のフィールドがあります。私はそれまでにすべての私のUPDATE文を動的に構築しました。
..だからフィールドには、いくつかのDBあなたの中に存在していない場合それを作成して更新する必要がありますか?またはフィールドが存在する場合のみ更新する必要がありますか? – gofr1
ちょっと@ gofr1 - それが存在しない場合、私は更新をスキップする必要があります。フィールドが「DATABASE2」、「DATABASE3」、または「DATABASE4」の場合は、「DATABASE1」を更新する必要があります。 – Simon