私は一時テーブルにデータを持っており、他の2つのテーブルで重複をチェックしています。見つかったすべての重複に対して、一時テーブル(SET DupFlag = TRUE)にフラグを設定します。私のSELECTステートメントは完璧に動作し、テストするために入力した48の複製のみを返します。しかし、UPDATEとWHERE EXISTSを追加すると、idTempImport2の各レコードはSELECTステートメントから返された48個のレコードではなく、TRUEに設定されます。私の構文は間違っていますか?これは次のようになります。WHERE EXISTSを使用した私のUPDATE文はSELECT文の結果に限定されていません
UPDATE idTempImport2 as tmp2 SET DupFlag = TRUE
WHERE EXISTS
(SELECT * FROM idTempImport2 tmp2
LEFT JOIN (SELECT im.idDate, im.UserID, im.ActionID, im.IsHC, idn.Epic1, idn.Epic2
FROM idMain AS im
INNER JOIN idNotes AS idn ON im.aID = idn.MainID
WHERE idDate BETWEEN "2017-01-02" AND "2017-01-31") AS qry
ON qry.idDate = tmp2.idDate AND qry.UserID = tmp2.UserID AND qry.ActionID = tmp2.ActionID AND qry.Epic1 = clng(tmp2.Epic1) AND qry.Epic2 = clng(tmp2.Epic2)
WHERE qry.Epic1 <> NULL);
あなたがNULLで通過しますが存在することを知っていますか? http://www.techrepublic.com/article/oracle-tip-understand-how-nulls-affect-in-and-exists/ http://stackoverflow.com/questions/5658457/not-equal-operator -null – user2184057
qry.Epic1 <>ここでNULLは、等号<> =!=演算子をNULLに使用しないエラーです。 nullと比較するとIS NULLを使用し、NULLではない – user2184057
これは、更新がselect文の返された結果に限定されないことを意味しますか? – Ginger