我想仅在满足条件时才更新列。因此对于列" 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结果中。这个练习的重点是在不需要时减少数据库操作。当条件不满足时,为什么还在修改记录?
感谢。
答案 0 :(得分:6)
为什么不这样简化?
UPDATE Report
SET Type = 'MongoDB'
WHERE Id = x AND Type <> 'MongoDB'
但是要回答你的问题,你仍然会设置一个记录值,即使它是现有值。该记录还会返回到where子句中,因此无论CASE语句如何,都会影响1行。