1
resposta

[Dúvida] Update com FROM

Tenho uma dúvida, é possível executar UPDATE e no WHERE como parâmetro utilizar uma subconsulta realizada anteriormente? Há sintaxe seria de qual forma?

Consulta de apenas de exemplo: UPDATE PRODUTOS SET PRECO_LISTA = PRECO_LISTA * 0.10 WHERE (SELECT CODIGO PRODUTOS WHERE SABOR = 'Manga') Ta certo que, eu poderia utilizar no where o próprio campo sabor.

1 resposta

Oi, Leonardo, tudo bem?

Para fazer um UPDATE utilizando uma subconsulta no WHERE, você precisa garantir que a subconsulta retorne um valor que possa ser usado para comparar diretamente com algum campo da tabela que você está atualizando. Além disso, a subconsulta deve retornar apenas um valor ou ser usada com um operador que possa lidar com múltiplos valores (como IN).

Segue abaixo o código que você mencionou, levando em consideração o comentário acima:

UPDATE PRODUTOS 
SET PRECO_LISTA = PRECO_LISTA * 0.10 
WHERE CODIGO IN (SELECT CODIGO FROM PRODUTOS WHERE SABOR = 'Manga');

Neste exemplo, utiliza-se o IN porque a subconsulta (SELECT CODIGO FROM PRODUTOS WHERE SABOR = 'Manga') pode retornar mais de um CODIGO. Assim, todos os produtos com sabor 'Manga' terão seu PRECO_LISTA atualizado.

Se você tiver certeza de que a subconsulta retorna apenas um valor, você poderia usar o operador =. Por exemplo, se você estivesse atualizando com base no código de um produto específico que você sabe que é único:

UPDATE PRODUTOS 
SET PRECO_LISTA = PRECO_LISTA * 0.10 
WHERE CODIGO = (SELECT CODIGO FROM PRODUTOS WHERE SABOR = 'Manga' AND ALGUM_OUTRO_CRITERIO = 'Específico');

Lembre-se de que é crucial garantir que a subconsulta não retorne mais de um valor quando usar o operador =, pois isso causará um erro.

Espero ter ajudado. Caso tenha dúvidas, conte com o fórum. Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!