我想仅在满足条件时才更新列.所以对于"Type"列,我想将其值更改为"MongoDB",只要它的当前值不是"MongoDB"这就是我正在使用的:
UPDATE Report
    SET Type = 
    CASE
       WHEN Type <> 'MongoDB' THEN 'MongoDB'
       ELSE Type
    END
    WHERE Id = x
问题是:即使Type是"MongoDB",我仍然会看到
(1排受影响)
在我的SQL结果中.这个练习的重点是在不需要时减少数据库操作.当条件不满足时,为什么还在修改记录?
谢谢.
为什么不像这样简化呢?
UPDATE Report
SET Type = 'MongoDB'
WHERE Id = x AND Type <> 'MongoDB'
但是要回答你的问题,你仍然会设置一个记录值,即使它是现有值.该记录还会返回到where子句中,因此无论CASE语句如何,您都将始终影响1行.