値が別のテーブルのフィールドと一致しない場合に、あるテーブルのフィールドを更新する更新クエリがあります。
UPDATE table1
SET a.field1 = b.field3
FROM table1 a ,
table2 b
WHERE a.field2 = b.field2
AND a.field1 <> b.field3
私が抱えている問題は、a.field1 が null で b.field3 が値である場合、または a.field1 が値で b.field3 が null である場合に検出されないことです。
以下を追加することでこれを回避しました...
UPDATE table1
SET a.field1 = b.field3
FROM table1 a ,
table2 b
WHERE a.field2 = b.field2
AND ( a.field1 <> b.field3
OR (a.field1 IS NOT NULL
AND b.field3 IS NULL)
OR (a.field1 IS NULL
AND b.field3 IS NOT NULL)
)
私の質問は、なぜこれが起こっているのか、そしてこれを防ぐためにクエリをどのように構成するのが最も良いのかということに集中していますか?