小编Hea*_*her的帖子

SQL比较和空值的问题

我有一个更新查询,当值与另一个表中的字段不匹配时更新一个表中的字段.

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)

我的问题更集中在为什么会发生这种情况以及如何最好地构建查询以防止这种情况?

sql sql-server-2008

19
推荐指数
3
解决办法
3万
查看次数

标签 统计

sql ×1

sql-server-2008 ×1