INNER JOIN
é a sintaxe ANSI que você deve usar. Geralmente é considerado mais legível, especialmente quando você junta muitas tabelas.
Ele também pode ser facilmente substituído por um
OUTER JOIN
sempre que houver necessidade. O
WHERE
sintaxe é mais orientada para o modelo relacional. Um resultado de duas tabelas
JOIN
ed é um produto cartesiano das tabelas às quais é aplicado um filtro que seleciona apenas as linhas com correspondência de colunas de junção. É mais fácil ver isso com o
WHERE
sintaxe. Quanto ao seu exemplo, no MySQL (e no SQL em geral) essas duas consultas são sinônimos.
Além disso, observe que o MySQL também possui um
STRAIGHT_JOIN
cláusula. Usando esta cláusula, você pode controlar o
JOIN
ordem:qual tabela é escaneada no loop externo e qual está no loop interno. Você não pode controlar isso no MySQL usando
WHERE
sintaxe.