我需要使用DataEHoraInicialDoFeedback
列中的值更新DataEHoraInicial
列,其中DescricaoDoFeedback
不为空(字段没有空值)和DataEHoraInicialDoFeedback
为空或DataEHoraInicialDoFeedback
为空,StatusDoFeedback
的值为com Sucesso
UPDATE GestaoDeAlertas
SET GestaoDeAlertas.DataEHoraInicialDoFeedback = GestaoDeAlertas.DataEHoraInicial
WHERE EXISTS
(
SELECT *
FROM GestaoDeAlertas
WHERE DescricaoDoFeedback <> ''
AND (DataEHoraInicialDoFeedback IS NULL OR DataEHoraInicialDoFeedback= '')
AND StatusDoFeedback= 'com Sucesso'
)
在我的测试中(我复制了表),上面的更新正在更新所有行,就像它忽略了where子句一样。
答案 0 :(得分:1)
您的查询说:
如果整个表中至少有一行满足 指定的条件,然后进行更新(无论当前行中的值如何)。
我相信Dan Bracuk
已经给了你正确的建议(见他的评论):使用直接WHERE
条款。