В моем MySQL какая разница между использованием слова JOIN или использованием: table1.id = table2.id - PullRequest
0 голосов
/ 08 февраля 2012

В моем MySQL, в чем разница между использованием слова JOIN или использованием: table1.id = table2.id

Table 1
id  name
1   John Lennon

Table 2
id  position
1   Singer

// В чем разница после вызова JOIN?

Select name, position
From Table1, Table2
Where Table1.id=Table2.id;

Ответы [ 3 ]

1 голос
/ 08 февраля 2012

Нет, пока есть только две таблицы.Если их больше, вы можете получить другой порядок JOIN, чем ожидалось, если вы используете запятую для разделения таблиц.

С manual :

INNER JOIN и,(запятая) семантически эквивалентны при отсутствии условия соединения: оба производят декартово произведение между указанными таблицами (то есть каждая строка в первой таблице объединяется с каждой строкой во второй таблице).

Однако приоритет оператора запятой меньше, чем у INNER JOIN, CROSS JOIN, LEFT JOIN и т. Д.Если вы смешиваете запятые объединения с другими типами соединений, когда существует условие соединения, может произойти ошибка формы Неизвестный столбец «col_name» в «on clause».Информация о решении этой проблемы приведена ниже в этом разделе.

1 голос
/ 08 февраля 2012

Использование JOIN известно как "явное соединение" или соединение ANSI ... разделение таблиц запятой и последующее связывание их в предложении WHERE называется "неявное соединение".

Объединение ANSI широко считается предпочтительным синтаксисом.Проще следовать, менее двусмысленно и более согласованно, когда вам нужно начать добавление внешних объединений.

Кроме того, если вы используете синтаксис неявного объединения, то легко получить случайное перекрестное соединение, если выне забудьте связать таблицы в вашем предложении WHERE.

1 голос
/ 08 февраля 2012

Если в этом случае, нет никакой разницы.Но соединения также могут быть: ВНУТРЕННИЕ, ВНЕШНИЕ (левые внешние, правые внешние, полные внешние соединения), ВЛЕВО, ПРАВО.

...