Ответ 1
MySQL описывает эту тему.
Вот краткий обзор. При использовании join
или inner join
условие on
не является обязательным. Это отличается от стандарта ANSI и отличается от любой другой базы данных. Эффект равен cross join
. Аналогично, вы можете использовать предложение on
с cross join
, которое также отличается от стандартного SQL.
Перекрестное объединение создает декартово произведение - то есть все возможные комбинации из 1 строки из первой таблицы и 1 строки из второй. Перекрестное соединение для таблицы с тремя строками ( "a", "b" и "c" ) и таблица с четырьмя строками (например, 1, 2, 3, 4) имели бы 12 строк.
На практике, если вы хотите выполнить перекрестное соединение, используйте cross join
:
from A cross join B
намного лучше, чем:
from A, B
и
from A join B -- with no on clause
Предложение on
требуется для правого или левого внешнего соединения, поэтому обсуждение не имеет для них значения.
Если вам нужно понять разные типы объединений, вам нужно немного изучить реляционные базы данных. Stackoverflow не подходит для такого уровня обсуждения.