Olá, optei por um resultado nulo para tratar futuramente com o cliente qual a melhor tratativa.
Identificando os preços diferentes com 2 tipos de buscas:
-- Busca unitária!
SELECT nome_produto, preco
FROM produtos
WHERE nome_produto = 'Bola de Futebol'
and preco not BETWEEN 20 and 100;
```-- Busca com case
SELECT id_produto, nome_produto,
CASE
WHEN nome_produto = 'Bola de Futebol' AND preco NOT BETWEEN 20 AND 100 THEN NULL
WHEN nome_produto = 'Chocolate' and preco not BETWEEN 10 and 50 THEN NULL
WHEN nome_produto = 'Celular' and preco not BETWEEN 80 and 5000 THEN NULL
WHEN nome_produto = 'Livro de Ficção' and preco not BETWEEN 10 and 200 THEN NULL
WHEN nome_produto = 'Camisa' and preco not BETWEEN 80 and 200 THEN NULL
END as preco
FROM produtos;
Alterando os preços diferentes para "NULL"!
BEGIN TRANSACTION;
-- Altera somente uma categoria para NULL
UPDATE produtos
SET preco = NULL
WHERE nome_produto = 'Bola de Futebol'
AND preco NOT BETWEEN 20 AND 100;
ROLLBACk;
BEGIN TRANSACTION;
-- Altera várias categorias para NULL
UPDATE produtos
SET preco =
CASE
WHEN nome_produto = 'Bola de Futebol' AND preco NOT BETWEEN 20 AND 100 THEN NULL
WHEN nome_produto = 'Chocolate' and preco not BETWEEN 10 and 50 THEN NULL
WHEN nome_produto = 'Celular' and preco not BETWEEN 80 and 5000 THEN NULL
WHEN nome_produto = 'Livro de Ficção' and preco not BETWEEN 10 and 200 THEN NULL
WHEN nome_produto = 'Camisa' and preco not BETWEEN 80 and 200 THEN NULL
ELSE preco
END;
ROLLBACk;