1
resposta

Dúvida sobre variedade de NOT IN

Boa noite, na última consulta, essa estratura funcionaria?

select [clientes], [estado] from [tabela de clientes] where [estado] != 'SP' or 'RJ'

ou

select [clientes], [estado] from [tabela de clientes] where [estado] <> 'SP' or 'RJ'

OU

SELECT [clientes], [estado] FROM [tabela de clientes] WHERE [estado] NOT IN ('SP', 'RJ');

1 resposta

Olá Bia, tudo bem?

Para a sua necessidade de listar clientes que não são de São Paulo (SP) nem do Rio de Janeiro (RJ), a terceira opção que você apresentou é a mais adequada:

SELECT [clientes], [estado]
FROM [tabela de clientes]
WHERE [estado] NOT IN ('SP', 'RJ');

Essa consulta utiliza o operador NOT IN, que é ideal para filtrar registros que não pertencem a um conjunto específico de valores, como 'SP' e 'RJ' nesse caso.

As duas primeiras opções que você mencionou não funcionariam corretamente para o que você deseja. Vamos entender o porquê:

  1. where [estado] != 'SP' or 'RJ': Essa estrutura não está correta porque a condição or 'RJ' não é uma comparação válida é apenas uma string isolada. E no SQL, qualquer string não vazia é considerada verdadeira. É como se o SQL interpretasse assim: "WHERE ([estado] != 'SP') OR ('RJ' IS TRUE)". E como 'RJ' é uma string, o SQL avalia isso como TRUE, sempre.

  2. where [estado] <> 'SP' or 'RJ': Similar à primeira, a condição or 'RJ' não é uma comparação válida e terá o mesmo efeito de retornar todos os registros.

Portanto, a opção com NOT IN é a mais apropriada para resolver o seu desafio.

Espero ter ajudado.

Qualquer dúvida que surgir, compartilhe no fórum.

Abraços e bons estudos!

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