2017-09-26 12 views
0

私はテーブルを使用して更新しますが、別のテーブルを使用して正しいフィールドを取得する必要があります。新しい情報は別のテーブルの別のフィールドから取得されません。 "列不明ASSEMBLYLINESOURCE.HEADERSYSUNIQUEID ... ...":結合を使用してテーブルを更新する

UPDATE PURCHASEHEADER SET PURCHASEHEADER.ORDERNOTES = 'Updated' 
WHERE EXISTS (
    SELECT 1 FROM ASSEMBLYLINESOURCE 
    WHERE PURCHASEHEADER.ORDERNUMBER = ASSEMBLYLINESOURCE.PURCHASEORDERNUMBER 
) AND ASSEMBLYLINESOURCE.HEADERSYSUNIQUEID = 72637001 

エラーが言って返されます。私は、次の試してみました

SELECT PURCHASEHEADER.ORDERNOTES 
FROM PURCHASEHEADER, ASSEMBLYLINESOURCE 
WHERE ASSEMBLYLINESOURCE.HEADERSYSUNIQUEID = 72637001 
    AND PURCHASEHEADER.ORDERNUMBER = ASSEMBLYLINESOURCE.PURCHASEORDERNUMBER 

次のSQL文は、正しい情報を返します。最初のクエリで動作するので存在します。

私は2017年7月のMark Rotteveelと同様の投稿を見ましたが、それでも動作させることはできません。

+0

ソースをフォーマットしていないようです。どうして?私はソースを読みやすくして構造を表現するのに15秒を費やしました。そして、あなたのUPDATEコマンドが内側からテーブルの内側を参照して外側のテーブルを参照しています。 –

答えて

1

閉じ括弧に問題があります。これを試して、それは私のために働いた。

UPDATE PURCHASEHEADER set PURCHASEHEADER.ORDERNOTES = 'Updated' 
WHERE EXISTS (SELECT 1 FROM ASSEMBLYLINESOURCE WHERE  
PURCHASEHEADER.ORDERNUMBER = ASSEMBLYLINESOURCE.PURCHASEORDERNUMBER AND 
ASSEMBLYLINESOURCE.HEADERSYSUNIQUEID = 72637001) 
+0

選択1の部分は何を意味しますか? –

+0

@SimonKingあなたの質問では、選択1はすでにコードに入っています。いずれの場合も、見つかった各行に対してリテラル値 '1'を持つ列を生成することを意味します。 'exists'は、その値ではなく、1つ以上の行の存在にだけ関心があります。 –

+0

Yehは、返された行に属するPURCHASEHEADER.ORDERNOTES列を修正して更新します。 – Saj

関連する問題