Sobes.tech
Junior — Middle

Qual é a diferença entre as operações CROSS JOIN e FULL OUTER JOIN em SQL, e em que casos usar cada uma delas?

sobes.tech IA

Resposta da IA

CROSS JOIN e FULL OUTER JOIN são tipos diferentes de junções de tabelas em SQL com objetivos distintos:

  • CROSS JOIN é o produto cartesiano de duas tabelas. Cada linha da primeira tabela combina-se com cada linha da segunda. Usado quando se deseja obter todas as combinações possíveis de linhas.

    Exemplo:

    SELECT * FROM A CROSS JOIN B;
    

    Se A tiver 3 linhas e B tiver 2, o resultado será de 6 linhas.

  • FULL OUTER JOIN combina linhas de ambas as tabelas, incluindo todas as linhas, mesmo que não haja correspondências na outra tabela. Onde não há correspondência, os campos da outra tabela serão preenchidos com NULL.

    Usado quando se deseja obter todos os dados de ambas as tabelas, mantendo as informações das linhas não correspondentes.

    Exemplo:

    SELECT * FROM A FULL OUTER JOIN B ON A.id = B.id;
    

Quando usar:

  • CROSS JOIN — para gerar todos os pares possíveis, por exemplo, ao criar horários ou combinações.
  • FULL OUTER JOIN — quando se deseja combinar dados de duas tabelas e manter todos os registros, mesmo que não haja correspondências.

Assim, o CROSS JOIN aumenta o número de linhas, enquanto o FULL OUTER JOIN combina dados mantendo todos os registros.