Um CROSS JOIN no PostgreSQL combina cada linha de uma tabela com cada linha de outra tabela, gerando um produto cartesiano. Isso é útil para gerar combinações, criar dados de teste ou parear elementos de dois conjuntos de dados.
🔖 Referência rápida: Precisa consultar rapidamente todos os tipos de JOIN? Confira nossa Cheat Sheet de SQL JOIN com diagramas visuais e exemplos de código.
Sintaxe básica
SELECT column1, column2
FROM table1
CROSS JOIN table2;
Você também pode usar a sintaxe implícita:
SELECT column1, column2
FROM table1, table2;
Exemplo: combinações de produtos e cores
Vamos considerar duas tabelas simples, products e colors, para demonstrar como um CROSS JOIN funciona.
Tabela products:
| product_id | product_name |
|---|---|
| 1 | T-Shirt |
| 2 | Jeans |
Tabela colors:
| color_id | color_name |
|---|---|
| 1 | Red |
| 2 | Blue |
Para gerar todas as combinações possíveis de produtos e cores:
SELECT product_name, color_name
FROM products
CROSS JOIN colors;
Resultado esperado:
| product_name | color_name |
|---|---|
| T-Shirt | Red |
| T-Shirt | Blue |
| Jeans | Red |
| Jeans | Blue |
O CROSS JOIN combina cada produto com cada cor, resultando em um total de 2 produtos × 2 cores = 4 combinações.
Casos de uso comuns
Gerar todas as combinações: crie variantes de produtos combinando tamanhos e cores:
SELECT size, color
FROM sizes CROSS JOIN colors;
Criar dados de teste: gere dados de exemplo para testes combinando diferentes parâmetros:
SELECT strategy, scenario
FROM strategies CROSS JOIN scenarios;
Modelos de relatório: crie linhas de espaço reservado para todas as combinações possíveis em relatórios.
Considerações importantes
Desempenho: o CROSS JOIN pode gerar conjuntos de resultados muito grandes. Uma tabela com 1.000 linhas cruzada com outra tabela de 1.000 linhas produz 1.000.000 de linhas.
Filtragem: use cláusulas WHERE para limitar os resultados:
SELECT product_name, color_name
FROM products CROSS JOIN colors
WHERE product_name = 'T-Shirt';
Conclusão
O CROSS JOIN é útil para gerar combinações e dados de teste, mas use-o com cuidado em tabelas grandes para evitar problemas de desempenho. Sempre considere o tamanho do seu conjunto de resultados antes de executar a consulta.
Beekeeper Studio é um cliente de banco de dados gratuito e open source
A melhor ferramenta de consultas e edição de SQL que já usei. Tem tudo o que preciso para gerenciar meu banco de dados. - ⭐⭐⭐⭐⭐ Mit
O Beekeeper Studio é rápido, intuitivo e fácil de usar. Ele suporta vários bancos de dados e funciona muito bem no Windows, Mac e Linux.
O que os usuários dizem sobre o Beekeeper Studio
"O Beekeeper Studio substituiu completamente meu antigo fluxo de trabalho com SQL. É rápido, intuitivo e torna o trabalho com bancos de dados agradável de novo."
"Já testei várias GUIs de banco de dados, mas o Beekeeper encontra o equilíbrio perfeito entre recursos e simplicidade. Simplesmente funciona."