Я не мог научиться хорошо использовать JOIN. Я всегда использовал код на стороне сервера для таких целей. Можно ли написать запрос соединения без ON
? В основном, как эти объединения отличаются LEFT JOIN, RIGHT JOIN они делают то же самое на моих примерах.
Могу ли я использовать mysql JOIN без условия ON?
Ответ 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 не подходит для такого уровня обсуждения.
Ответ 2
См. пример http://www.sitepoint.com/understanding-sql-joins-mysql-database/
Вы можете использовать 'USING' вместо 'ON', как в запросе
SELECT * FROM table1 LEFT JOIN table2 USING (id);
Ответ 3
Вы также можете изучить использование UNION, который объединяет несколько таблиц для одного вывода: SQL - объединить две таблицы для одного вывода