O operador IN é utilizado para verificar se um valor pertence a uma lista de valores especificados.
Ele simplifica consultas que exigiriam diversas comparações utilizando o operador OR.
SELECT *
FROM tabela
WHERE campo IN
(valor1, valor2, valor3);
CLIENTES
+----+----------+-------------+
| ID | Nome | Cidade |
+----+----------+-------------+
| 1 | Ana | Jacareí |
| 2 | Carlos | São Paulo |
| 3 | Pedro | Campinas |
| 4 | Maria | Jacareí |
| 5 | João | Taubaté |
+----+----------+-------------+
SELECT *
FROM clientes
WHERE cidade IN
('Jacareí', 'Campinas');
Retorna clientes que moram em Jacareí ou Campinas.
SELECT *
FROM clientes
WHERE cidade = 'Jacareí'
OR cidade = 'Campinas';
O resultado é o mesmo, porém a consulta com IN é mais simples.
SELECT *
FROM produtos
WHERE id IN (1, 3, 5, 8);
Retorna apenas os registros com os IDs informados.
SELECT *
FROM pedidos
WHERE data_pedido IN
('2026-01-10',
'2026-02-15',
'2026-03-20');
Filtra registros que correspondem exatamente às datas informadas.
O operador NOT IN retorna registros que não pertencem à lista.
SELECT *
FROM clientes
WHERE cidade NOT IN
('Jacareí', 'Campinas');
Retorna clientes que moram em outras cidades.
SELECT *
FROM clientes
WHERE id IN
(
SELECT id_cliente
FROM pedidos
);
Retorna clientes que possuem pedidos cadastrados.
| Sistema | Utilização |
|---|---|
| E-commerce | Produtos por categorias específicas |
| CRM | Clientes de determinadas regiões |
| RH | Funcionários de setores específicos |
| Financeiro | Filtragem de lançamentos |
| Erro | Problema |
|---|---|
| Esquecer parênteses | Erro de sintaxe |
| Tipos incompatíveis | Resultado incorreto |
| Lista vazia | Nenhum registro encontrado |
| Uso inadequado do NOT IN | Resultados inesperados |