Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como usar mysql JOIN sem condição ON?


MySQL documentação abrange este tópico.

Aqui está uma sinopse. Ao usar join ou inner join , o on condição é opcional. Isso é diferente do padrão ANSI e diferente de quase qualquer outro banco de dados. O efeito é uma cross join . Da mesma forma, você pode usar um on cláusula com cross join , que também difere do SQL padrão.

Uma junção cruzada cria um produto cartesiano -- ou seja, todas as combinações possíveis de 1 linha da primeira tabela e 1 linha da segunda. A junção cruzada para uma tabela com três linhas ('a', 'b' e 'c') e uma tabela com quatro linhas (digamos 1, 2, 3, 4) teria 12 linhas.

Na prática, se você quiser fazer uma junção cruzada, use cross join :
from A cross join B

é muito melhor do que:
from A, B

e:
from A join B -- with no on clause

O on cláusula é necessária para uma junção externa direita ou esquerda, portanto, a discussão não é relevante para eles.

Se você precisar entender os diferentes tipos de junções, precisará estudar um pouco sobre bancos de dados relacionais. Stackoverflow não é um local apropriado para esse nível de discussão.