У меня есть запрос обновления, который обновляет поле в одной таблице, когда значение не совпадает с полем в другой таблице.
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 является нулевым.
Я обошел это, добавив следующее...
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)
)
Мой вопрос более сосредоточен вокруг того, почему это происходит и как лучше структурировать запрос, чтобы предотвратить это?