É verdade que ambas as formas de sintaxe devem dar o mesmo resultado e internamente o MySQL as executa exatamente da mesma maneira. As versões atuais do padrão SQL suportam ambas as formas, embora o estilo de vírgula seja suportado apenas para fins de compatibilidade com versões anteriores.
Há um caso em que o uso da sintaxe de estilo de vírgula falha, mas é exótico:
SELECT * FROM A, B JOIN C ON C.x = A.y;
O
JOIN
operador tem precedência maior do que a vírgula. Então, como a consulta acima está tentando avaliar C.x = A.y
ele nem sabe que A
faz parte da consulta. Então você recebe um erro:ERROR 1054 (42S22): Unknown column 'A.y' in 'on clause'
O melhor remédio é usar o
JOIN
sintaxe consistentemente em vez de misturá-los. Além disso, você não pode fazer associações externas com a sintaxe de junção por vírgula. Oracle e Sybase/Microsoft inventaram sua própria sintaxe proprietária para lidar com associações externas, mas nenhuma delas é suportada por outras marcas de RDBMS. Hoje, todas as versões atuais do RDBMS, incluindo Oracle e Sybase/Microsoft, suportam o padrão
JOIN
sintaxe, portanto, não há um bom motivo para usar as extensões específicas do fornecedor herdado.