Comando SQL que altere, simultaneamente, os valores da coluna

pessoal alguem pode me dar um help no que esta errado no meu codigo?

Escreva o comando SQL que altere, simultaneamente, os valores da coluna “relacao” da tabela “dependente” observando as regras:
“Filho” altere para “Sobrinho”
“Filha” altere para “Sobrinha”
“Esposo” altere para “Irmão” e
"Esposa" altere para “Irmã”

MEU CODIGO:

UPDATE dependente
SET Filho = Sobrinho , Filha = Sobrinha ,Esposo = Irmão , Esposa = Irmã
WHERE relacao= Filho = Filho AND Filha = Filha AND Esposo = Esposo AND Esposa = Esposa;

Vamos por partes, o que você precisa fazer é, caso a coluna relação contenha o valor “Filho”, alterar este valor para "Sobrinho’ e, cada caso, de acordo com o que está ali no enunciado.
O script que você fez está todo errado.

Se você quiser dar update em todos os registros de uma coluna qualquer, faria isso

UPDATE table
SET column = 'ABC';

Então, todos os registros da tabela table terão valor ‘ABC’.
Se você quer condicionar esta alteração a todos os registros onde o valor de column seja ‘XYZ’, você faz

UPDATE table
SET column = 'ABC'
WHERE column = 'XYZ';

Entendeu?
Agora, nesta situação, você não pode só fazer como no exemplo. Precisa de uma única query que altere tudo, simultaneamente
Como você pode fazer?

1 curtida

muito obrigado meu grande amigo me ajudou bastante

Algo como um Update aplicando um case deve funcionar!
Só verifique a sintaxe do comando pois de cabeça não me recordo, mas deve ser algo como o que segue abaixo:

UPDATE dependente SET 
relacao = (CASE relacao
		   WHEN 'Filho' THEN 'Sobrinho'
		   WHEN 'Filha' THEN 'Sobrinha'
		   WHEN 'Esposo' THEN 'Irmão'
		   WHEN 'Esposa' THEN 'Irmã'
		   ELSE 'Valor Indefinido' END);