У 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 через забуте речення join, оскільки речення join пишуться поруч із об’єднаннями, і легко зрозуміти, чи немає такого.