Como usar JOIN com mais de uma condição?
Em SQL, podemos aplicar múltiplas condições dentro de um JOIN
, utilizando operadores como AND
e OR
para refinar a junção entre tabelas.
Usando JOIN com múltiplas condições (AND)
Se quisermos unir tabelas baseando-se em mais de um critério, podemos utilizar AND
dentro da cláusula ON
:
SELECT pedidos.id, clientes.nome, pedidos.valor
FROM pedidos
INNER JOIN clientes ON pedidos.cliente_id = clientes.id AND pedidos.status = 'confirmado';
Aqui, a junção ocorre apenas para pedidos confirmados, garantindo que clientes só apareçam se atenderem a ambas as condições.
Usando JOIN com múltiplas condições (OR)
Se quisermos unir registros que satisfaçam qualquer uma das condições, podemos usar OR
:
SELECT pedidos.id, clientes.nome, pedidos.valor
FROM pedidos
INNER JOIN clientes ON pedidos.cliente_id = clientes.id OR pedidos.valor > 500;
Essa consulta traz todos os pedidos vinculados a clientes e também os pedidos acima de R$500, mesmo sem um cliente associado.
Filtrando dentro do JOIN ou no WHERE?
Podemos incluir condições no JOIN
ou no WHERE
. A diferença principal é:
- Filtrar no JOIN restringe os dados durante a junção.
- Filtrar no WHERE mantém a junção completa, aplicando a condição depois.
Exemplo de filtragem no WHERE
:
SELECT pedidos.id, clientes.nome, pedidos.valor
FROM pedidos
INNER JOIN clientes ON pedidos.cliente_id = clientes.id
WHERE pedidos.status = 'confirmado';
Aqui, todos os pedidos são unidos primeiro, e só depois os não confirmados são removidos.
Usando JOIN com BETWEEN, IN e LIKE
Também podemos utilizar outras condições dentro do JOIN
, como BETWEEN
, IN
e LIKE
:
SELECT pedidos.id, clientes.nome, pedidos.valor
FROM pedidos
INNER JOIN clientes ON pedidos.cliente_id = clientes.id AND pedidos.data BETWEEN '2024-01-01' AND '2024-02-01';
Isso garante que apenas pedidos feitos em janeiro de 2024 sejam considerados na junção.
Quando utilizar JOIN com múltiplas condições no SQL?
O uso de múltiplas condições em JOINs no SQL é essencial para consultas avançadas, permitindo refinar as junções de acordo com critérios específicos. Em sistemas financeiros, por exemplo, pode ser necessário unir transações e clientes apenas quando os valores forem acima de um determinado limite e a conta estiver ativa. Já em e-commerces, a combinação de critérios ajuda a gerar relatórios detalhados, como vendas por período e status de pagamento. Escolher entre usar AND
, OR
e outras condições impacta diretamente na performance da consulta e na qualidade dos resultados.
Algumas aplicações:
- Filtrar pedidos e clientes apenas quando atendem a múltiplos critérios
- Relacionar funcionários e departamentos aplicando restrições extras
- Unir dados de vendas considerando intervalos de tempo específicos
- Combinar informações de usuários e interações com regras detalhadas
- Melhorar a precisão de relatórios ao incluir condições avançadas
Dicas para quem está começando
- Use
AND
para restringir registros que atendam a todas as condições - Prefira
OR
quando precisar incluir registros que satisfaçam qualquer uma das condições - Se houver muitas condições, considere testar a consulta com
EXPLAIN
para otimização - Evite funções nas colunas do
JOIN
, pois podem impactar a performance - Quando possível, utilize índices nas colunas utilizadas na junção para melhor desempenho

Rodrigo Martins
Especialista em bancos de dados SQL e otimização de consultas para aplicações críticas.
Mais sobre o autor