С Страница документации MySQL
Ранее операторы запятой (,) и JOIN имели одинаковый приоритет, поэтому выражение соединения t1, t2 JOIN t3 интерпретировалось как ((t1, t2) JOIN t3). Теперь JOIN имеет более высокий приоритет, поэтому выражение интерпретируется как (t1, (t2 JOIN t3)). Это изменение влияет на операторы, использующие предложение ON, потому что это предложение может ссылаться только на столбцы в операндах соединения, а изменение в приоритете меняет интерпретацию того, чем являются эти операнды.
Пример:
CREATE TABLE t1 (i1 INT, j1 INT);
CREATE TABLE t2 (i2 INT, j2 INT);
CREATE TABLE t3 (i3 INT, j3 INT);
SELECT * FROM t1, t2 JOIN t3 ON (t1.i1 = t3.i3);
Ранее SELECT был допустимым из-за неявной группировки t1, t2 как (t1, t2). Теперь JOIN имеет приоритет, поэтому операндами для предложения ON являются t2 и t3. Поскольку t1.i1 не является столбцом ни в одном из операндов, результатом будет ошибка Unknown column 't1.i1' в 'on clause'. Чтобы разрешить обработку объединения, сгруппируйте первые две таблицы явно в круглых скобках, чтобы операндами для предложения ON были (t1, t2) и t3:
SELECT * FROM (t1, t2) JOIN t3 ON (t1.i1 = t3.i3);
В качестве альтернативы, избегайте использования оператора запятой и используйте вместо этого JOIN:
SELECT * FROM t1 JOIN t2 JOIN t3 ON (t1.i1 = t3.i3);
Это изменение также применяется к операторам, которые смешивают оператор запятой с INNER JOIN, CROSS JOIN, LEFT JOIN и RIGHT JOIN, причем все они имеют более высокий приоритет, чем оператор запятой.