我有一个更新查询,当值与另一个表中的字段不匹配时,它会更新一个表中的字段。
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)
)
我的问题更集中在为什么会发生这种情况以及如何最好地构建查询以防止这种情况发生?