PostgreSQL IN, não IN com exemplos

⚡ Resumo Inteligente

PostgreSQL O operador IN verifica se um valor aparece em uma lista ou subconsulta dentro de uma cláusula WHERE, substituindo várias condições OR em instruções SELECT, UPDATE, INSERT e DELETE para uma filtragem mais limpa, rápida e legível.

  • 📋 Sintaxe: O valor IN (lista) retorna verdadeiro quando o valor corresponde a qualquer item da lista.
  • 🔤 Lista de personagens: Inclua os valores de texto entre aspas simples dentro dos parênteses.
  • 🔢 Listas Numéricas: Compare os números diretamente, sem aspas, para obter correspondências exatas.
  • 🚫 NÃO INCLUÍDO: Retorna as linhas cujo valor está ausente da lista fornecida.
  • ⚠️ Armadilha NULL: Um valor NULL dentro de um NOT IN pode retornar silenciosamente zero linhas.
  • 🤖 Consultas de IA: Os assistentes criam cláusulas IN e sinalizam valores NULL e riscos de desempenho.

PostgreSQL DENTRO, NÃO DENTRO com exemplos

O que é a PostgreSQL DENTRO?

O operador IN é usado em uma cláusula WHERE que permite verificar se um valor está presente em uma lista de outros valores. A operação IN ajuda a reduzir a necessidade de múltiplas condições OR em instruções SELECT, UPDATE, INSERT ou DELETE.

Sintaxe

O operador IN assume a seguinte sintaxe:

value IN (value_1, value_2, ...)

O valor é o valor que você está verificando na lista.

O valor_1, valor_2… são os valores da lista.

Se o valor for encontrado na lista, o operador retornará verdadeiro.

A lista pode ser um conjunto de números ou strings, ou até mesmo o resultado de uma operação. Instrução SELECT como mostrado abaixo:

value IN (SELECT value FROM table-name);

A instrução colocada entre parênteses é conhecida como subconsulta.

PostgreSQL COM Personagem

Deixe-nos demonstrar como você pode usar o operador IN com valores de caracteres.

Considere a seguinte tabela:

funcionários:

PostgreSQL COM Personagem

Vamos executar a seguinte consulta na tabela acima:

SELECT * FROM Employees WHERE name IN ('James John', 'Mercy Bush', 'Kate Joel');

Retorna o seguinte:

PostgreSQL COM resultado de caractere

Temos uma lista com três nomes. Estamos procurando por algum desses nomes na coluna "Nome" da tabela "Funcionários". Kate Joel foi encontrada em um dos registros da tabela e seus detalhes foram retornados.

PostgreSQL EM Com Numérico

Agora, vamos ver como podemos usar o operador IN com valores numéricos.

Considere a tabela de preços fornecida abaixo:

Preço:

PostgreSQL EM Com Numérico

Podemos executar a seguinte consulta na tabela:

SELECT * FROM Price WHERE price IN (200, 308, 250, 550);

Isso retorna o seguinte:

PostgreSQL COM resultado numérico

Criamos uma lista com 4 valores numéricos. Estamos verificando se podemos combinar algum desses valores com os valores contidos na coluna de preço da tabela Preço. Dois valores foram correspondidos e seus detalhes foram retornados.

Usando o NÃO Operator

O operador IN pode ser usado junto com o operador NOT. Ele retorna os valores que não foram encontrados na coluna especificada. Usaremos a tabela de preços para demonstrar isso.

SELECT * FROM Price WHERE price NOT IN (200, 400, 190, 230);

Isso retornará o seguinte:

PostgreSQL Usando o operador NOT

Criamos uma lista com 4 valores numéricos. Estamos verificando a coluna de preços da tabela Preço em busca de valores que não fazem parte da lista. Dois valores, 250 e 300, não foram encontrados. Portanto, seus detalhes foram retornados.

Usando pgAdmin

Além do shell SQL, as mesmas consultas IN e NOT IN podem ser executadas visualmente através da interface do pgAdmin.

Com caráter

Para fazer o mesmo por meio do pgAdmin, faça o seguinte:

Passo 1) Faça login em sua conta pgAdmin.

Passo 2)

  1. Na barra de navegação à esquerda, clique em Bancos de dados.
  2. Clique em Demonstração.

Usando pgAdmin com personagem

Passo 3) Digite a consulta no editor de consultas:

SELECT * FROM Employees WHERE name IN ('James John', 'Mercy Bush', 'Kate Joel');

Passo 4) Clique no botão Executar.

Usando pgAdmin com consulta de caracteres

Deve retornar o seguinte:

Usando pgAdmin com resultado de caractere

Com Numérico

Para fazer o mesmo por meio do pgAdmin, faça o seguinte:

Passo 1) Faça login em sua conta pgAdmin.

Passo 2)

  1. Na barra de navegação à esquerda, clique em Bancos de dados.
  2. Clique em Demonstração.

Usando pgAdmin com numérico

Passo 3) Digite a consulta no editor de consultas:

SELECT * FROM Price WHERE price IN (200, 308, 250, 550);

Passo 4) Clique no botão Executar.

Usando o pgAdmin com consulta numérica

Deve retornar o seguinte:

Usando pgAdmin com resultado numérico

Usando o NÃO Operator

Para fazer o mesmo por meio do pgAdmin, faça o seguinte:

Passo 1) Faça login em sua conta pgAdmin.

Passo 2)

  1. Na barra de navegação à esquerda, clique em Bancos de dados.
  2. Clique em Demonstração.

Utilizando o operador NOT no pgAdmin

Passo 3) Digite a consulta no editor de consultas:

SELECT * FROM Price WHERE price NOT IN (200, 400, 190, 230);

Passo 4) Clique no botão Executar.

Usando o operador NOT em consultas no pgAdmin

Deve retornar o seguinte:

O uso do operador NOT resulta em pgAdmin

Baixe o banco de dados usado neste tutorial

Perguntas Frequentes

In PostgreSQLO comando EXISTS costuma ser mais rápido que o IN em subconsultas grandes porque para na primeira correspondência. Para listas pequenas e constantes, o IN é simples e eficiente. Teste ambos com EXPLAIN ANALYZE em seus próprios dados.

A condição NOT IN trata valores NULL como desconhecidos; portanto, se a lista ou subconsulta contiver um valor NULL, toda a condição poderá ser avaliada como desconhecida e retornar zero linhas. Filtre os valores NULL ou use NOT EXISTS em vez disso.

A cláusula IN substitui longas cadeias de condições OR por uma única cláusula legível. WHERE id IN (1,2,3) é equivalente a WHERE id=1 OR id=2 OR id=3, mas é mais curta, mais clara e mais fácil de manter.

Sim. Travas deslizantes portáteis PostgreSQL trata x IN (a, b, c) como equivalente a x = ANY (ARRAY[a, b, c]). Ambos produzem o mesmo resultado e geralmente o mesmo plano de consulta.

Os assistentes de IA geram cláusulas IN a partir de linguagem natural, sugerem a lista de valores correta e sinalizam riscos de valores NULL em cláusulas NOT IN. Eles também reescrevem consultas lentas e adicionam dicas EXPLAIN para otimização.

Sim. As ferramentas do AI Copilot detectam condições OR repetidas em uma coluna e as reorganizam em uma única lista IN, melhorando a legibilidade e reduzindo a probabilidade de erros lógicos.

Sim. Coloque um SELECT dentro dos parênteses: WHERE id IN (SELECT id FROM orders). A consulta interna, chamada subconsulta, fornece a lista de valores verificados por IN.

Para tabelas grandes, NOT EXISTS ou um LEFT JOIN com IS NULL geralmente têm um desempenho melhor do que NOT IN porque PostgreSQL Constrói uma anti-junção eficiente. Além disso, garante que as colunas comparadas estejam indexadas.

Resuma esta postagem com: