Ao executar uma instrução UPDATE ou DELETE que atualiza condicionalmente um subconjunto de linhas na tabela SQL, você deve incluir uma cláusula WHERE para definir o escopo do conjunto de dados que está alterando. Caso contrário, sua consulta não terá o escopo definido e você provavelmente estará cometendo atualizações indesejadas. Exemplo:
UPDATE table_name
SET column_a = (
CASE column_b
WHEN 'value1' THEN 'some value'
...
WHEN 'valuen' THEN 'another value'
END
)
Esta declaração parece estar atualizando apenas um subconjunto da tabela. Se executado como está, column_a será definido como NULL para linhas em que column_b não corresponda a nenhuma condição na instrução CASE e atualizado conforme o esperado quando corresponder. Para garantir que você está atualizando as linhas corretas, anexe o seguinte a elas:
WHERE column_b IN ('value1', ..., 'valuen');
Se você tiver um fallback ou valor padrão para column_b, esse problema pode ser contornado incluindo um ELSE em sua instrução CASE.