No MySQL escrevendo
JOIN
unqualified implica INNER JOIN
. Em outras palavras, o INNER
em INNER JOIN
é opcional. INNER
e CROSS
são sinônimos no MySQL. Para maior clareza, escrevo JOIN
ou INNER JOIN
se eu tiver uma condição de junção e CROSS JOIN
se eu não tiver condição. A sintaxe permitida para junções está descrita na documentação .
O efeito é o mesmo, mas a história por trás deles é diferente. A sintaxe da vírgula é do padrão ANSI-89. No entanto, existem vários problemas com essa sintaxe, portanto, no padrão ANSI-92, a palavra-chave JOIN foi introduzida.
Eu recomendo fortemente que você sempre use a sintaxe JOIN em vez da vírgula.
T1 JOIN T2 ON ...
é mais legível queT1, T2 WHERE ...
.- É mais fácil de manter porque os relacionamentos e filtros da tabela são claramente definidos em vez de misturados.
- A sintaxe JOIN é mais fácil de converter em OUTER JOIN do que a sintaxe de vírgula.
- Misturar a vírgula e a sintaxe JOIN na mesma instrução pode gerar erros curiosos devido às regras de precedência.
- É menos provável criar acidentalmente um produto cartesiano ao usar a sintaxe JOIN devido a uma cláusula de junção esquecida, porque as cláusulas de junção são escritas ao lado das junções e é fácil ver se uma está faltando.