SQL:仅在满足条件时更新字段

时间:2016-08-02 20:00:09

标签: sql sql-server

我想仅在满足条件时才更新列。因此对于列" Type",我想将其值更改为" MongoDB"只有当前的值不是'#34; MongoDB"这就是我正在使用的:

UPDATE Report
    SET Type = 
    CASE
       WHEN Type <> 'MongoDB' THEN 'MongoDB'
       ELSE Type
    END
    WHERE Id = x

问题是: 即使Type是&#34; MongoDB&#34;我还是看

  

(1行受影响)

在我的SQL结果中。这个练习的重点是在不需要时减少数据库操作。当条件不满足时,为什么还在修改记录?

感谢。

1 个答案:

答案 0 :(得分:6)

为什么不这样简化?

UPDATE Report
SET Type = 'MongoDB'
WHERE Id = x AND Type <> 'MongoDB'

但是要回答你的问题,你仍然会设置一个记录值,即使它是现有值。该记录还会返回到where子句中,因此无论CASE语句如何,都会影响1行。