Кроме синтаксиса, для небольшого фрагмента они работают точно так же.Но, если это вообще возможно, всегда пишите новые запросы, используя ANSI-JOIN.
Что касается семантической формы, то запятая нотация используется для создания продукта CARTESIAN между двумя таблицами, что означает создание матрицы всех записей из таблицы Aсо всеми записями из таблицы B, поэтому две таблицы с 4 и 6 записями соответственно создают 24 записи.Используя предложение WHERE, вы можете выбрать строки, которые вам действительно нужны, из этого декартового произведения.Тем не менее, MySQL фактически не выполняет и не создает эту огромную матрицу, но семантически это то, что он означает.
Синтаксис JOIN - это стандарт ANSI, который более четко определяет, как взаимодействуют таблицы.Помещая предложение ON
рядом с JOIN
, он проясняет, что связывает две таблицы.
Функционально они будут выполнять то же самое для двух ваших запросов.Разница возникает, когда вы начинаете использовать другие типы [OUTER]
JOIN.
В частности, для MySQL запятая имеет одно отличие
STRAIGHT_JOIN аналогичноJOIN, за исключением того, что левая таблица всегда читается перед правой таблицей.Это может быть использовано в тех (немногих) случаях, когда оптимизатор объединения размещает таблицы в неправильном порядке.
Однако было бы неразумно рассчитывать на эту разницу.