根据某些条件更新表

时间:2013-05-23 14:55:09

标签: sql nested

我需要使用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子句一样。

1 个答案:

答案 0 :(得分:1)

您的查询说:

  

如果整个表中至少有一行满足   指定的条件,然后进行更新(无论当前行中的值如何)。

我相信Dan Bracuk已经给了你正确的建议(见他的评论):使用直接WHERE条款。