Além da sintaxe, para o pequeno trecho, eles funcionam exatamente da mesma forma. Mas, se possível, sempre escreva novas consultas usando ANSI-JOINs.
Semanticamente, a notação de vírgula é usada para produzir um produto CARTESIANO entre duas tabelas, o que significa produzir uma matriz de todos os registros da tabela A com todos os registros da tabela B, então duas tabelas com 4 e 6 registros respectivamente produzem 24 registros. Usando a cláusula WHERE, você pode escolher as linhas que realmente deseja desse produto cartesiano. No entanto, o MySQL na verdade não segue e faz essa enorme matriz, mas semanticamente é isso que significa.
Uma sintaxe JOIN é o padrão ANSI que define mais claramente como as tabelas interagem. Colocando o
ON
cláusula ao lado do JOIN
, deixa claro o que liga as duas tabelas. Funcionalmente, eles realizarão o mesmo para suas duas consultas. A diferença vem quando você começa a usar outro
[OUTER]
Tipos de JOIN. Para MySQL especificamente, a notação de vírgula tem uma diferença
STRAIGHT_JOIN é semelhante a JOIN, exceto que a tabela da esquerda é sempre lida antes da tabela da direita. Isso pode ser usado para aqueles (poucos) casos para os quais o otimizador de junção coloca as tabelas na ordem errada.
No entanto, não seria sábio apostar nessa diferença.