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!