Pular para o conteúdo principal
Documentos
Sintaxe básicaFunções JSONAcionadoresGerenciamento de tabelas e esquemasFunções de cadeia de caracteresFunções matemáticasFunções de dataBancos de dadosÍndices

PostgreSQL IN

A cláusula `IN` no PostgreSQL é utilizada para filtrar linhas com base no fato de o valor de uma coluna corresponder a qualquer valor em uma lista especificada. É comumente utilizado em instruções `SELECT`, `UPDATE` e `DELETE` para simplificar as consultas que envolvem vários valores.

Uso

A cláusula `IN` é usada quando você precisa testar se um valor existe em um conjunto de valores fornecidos. Ele simplifica as consultas, permitindo que vários valores sejam verificados de uma só vez.

SELECT column_name
FROM table_name
WHERE column_name IN (value1, value2, ...);

Nessa sintaxe, a cláusula `IN` é usada para determinar se `column_name` corresponde a algum dos valores fornecidos entre parênteses.

Exemplos

1. Uso básico de IN

SELECT *
FROM products
WHERE category_id IN (1, 2, 3);

Essa consulta seleciona todas as colunas da tabela `produtos` em que `category_id` é 1, 2 ou 3.

2. Usando IN com cadeias de caracteres

SELECT employee_id, name
FROM employees
WHERE department IN ('Sales', 'Marketing');

Este exemplo recupera `employee_id` e `name` da tabela `employees` para aqueles que trabalham nos departamentos de "Vendas" ou "Marketing".

3. IN com subconsulta

SELECT order_id, order_date
FROM orders
WHERE customer_id IN (SELECT customer_id FROM customers WHERE country = 'USA');

Aqui, a cláusula `IN` é usada com uma subconsulta para localizar pedidos em que o cliente é dos EUA. Observe que a subconsulta deve retornar uma única coluna para ser usada com `IN`.

Dicas e práticas recomendadas

  • Use IN para maior clareza. Opte por `IN` ao fazer a verificação de vários valores para melhorar a legibilidade em relação a várias condições `OR`.
  • Considere o desempenho. Para listas grandes, considere o uso de uma união de tabelas ou de uma tabela temporária para otimizar o desempenho da consulta. Ao unir tabelas em colunas indexadas, você pode ser mais eficiente do que usar `IN` com uma grande lista de valores.
  • Aproveite as subconsultas. Utilize subconsultas no `IN` para lidar com condições complexas e listas geradas dinamicamente.
  • Evite armadilhas nulas. Lembre-se de que, se algum valor da lista for `NULL`, o resultado será `false`, a menos que você o manipule explicitamente. Considere o uso explícito de `IS NOT NULL` para lidar com possíveis valores `NULL` na lista, já que `IN` é avaliado como `false` se algum valor for `NULL`.