В написании MySQL JOIN
без оговорок подразумевает INNER JOIN
.Другими словами, INNER
в 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 из-за забытого предложения join, потому что предложения join написаны рядом с соединениями, и легко увидеть, отсутствует ли это.