В MySQL JOIN
неквалифицированное написание подразумевает INNER JOIN
. Другими словами, INNER
in не INNER JOIN
является обязательным. INNER
и CROSS
являются синонимами в MySQL. Для ясности я пишу, JOIN
есть INNER JOIN
ли у меня условие соединения и CROSS JOIN
если у меня нет условия.
Допустимый синтаксис для объединений описан в документации .
Прямо сейчас я думаю, что автономный JOIN - это не что иное, как (идентичное) использование запятых и предложений WHERE.
Эффект тот же, но история за ними другая. Синтаксис запятой взят из стандарта ANSI-89. Однако есть ряд проблем с этим синтаксисом, поэтому в стандарте ANSI-92 было введено ключевое слово JOIN.
Я настоятельно рекомендую всегда использовать синтаксис JOIN, а не запятую.
T1 JOIN T2 ON ...
читабельнее чем T1, T2 WHERE ...
.
- Он более удобен в обслуживании, потому что взаимосвязи таблиц и фильтры четко определены, а не смешаны вместе.
- Синтаксис JOIN легче преобразовать во OUTER JOIN, чем синтаксис с запятой.
- Смешивание запятой и синтаксиса JOIN в одном операторе может привести к любопытным ошибкам из-за правил приоритета.
- При использовании синтаксиса JOIN вероятность случайного создания декартова произведения меньше из-за забытого предложения соединения, потому что предложения соединения написаны рядом с соединениями, и легко увидеть, отсутствует ли оно.