Как использовать mysql JOIN без условия?

можно ли написать запрос соединения без ON заявление? и как эти соединения отличаются LEFT JOIN, RIGHT JOIN строительство.

3 ответов


в MySQL документация охватывает эту тему.

вот краткий обзор. При использовании join или inner join, the 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 не является подходящим местом для такого уровня обсуждения.


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

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

SELECT * FROM table1 LEFT JOIN table2 USING (id);

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