Ответ 1
В MySQL-записи JOIN
unqualified подразумевает 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 из-за забытого условия соединения, поскольку предложения соединения записываются рядом с объединениями, и легко видеть, отсутствует ли он.