我有一个更新查询,当值与另一个表中的字段不匹配时更新一个表中的字段.
UPDATE table1
SET a.field1 = b.field3
FROM table1 a ,
table2 b
WHERE a.field2 = b.field2
AND a.field1 <> b.field3
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,当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)
)
Run Code Online (Sandbox Code Playgroud)
我的问题更集中在为什么会发生这种情况以及如何最好地构建查询以防止这种情况?