Могу ли я использовать mysql JOIN без условия ON?

Я не мог научиться хорошо использовать JOIN. Я всегда использовал код на стороне сервера для таких целей. Можно ли написать запрос соединения без ON? В основном, как эти объединения отличаются LEFT JOIN, RIGHT JOIN они делают то же самое на моих примерах.

+53
источник поделиться
3 ответа

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 не подходит для такого уровня обсуждения.

+80
источник

См. пример http://www.sitepoint.com/understanding-sql-joins-mysql-database/

Вы можете использовать 'USING' вместо 'ON', как в запросе

SELECT * FROM table1 LEFT JOIN table2 USING (id);
+5
источник
другие ответы

Связанные вопросы


Похожие вопросы

Вы также можете изучить использование UNION, который объединяет несколько таблиц для одного вывода: SQL - объединить две таблицы для одного вывода

+2
источник

Посмотрите другие вопросы по меткам или Задайте вопрос