Hola,
Disculpen que me meta de aguafiestas pero tengo entendido que en realidad no es lo mismo hacer un:
where TablaA.Campo1 = TablaB.Campo1
que el aplicar un join:
join TablaB
on TablaA.Campo1 = TablaB.Campo1
Sobre todo cuando se trata de valores NULLs.
Cuando se utiliza JOINs, según el estándar, el motor obvia aquellos registros que tengan en sus campos comunales el NULL (a menos se que utilice LEFT|RIGTH [OUTER]). Mientras que al utilizar el where no considera una evaluación en los campos comunes. Más bien obvia aquellos en los que una de las partes sea NULL. Que no es lo mismo.
Si obtienes los mismos resultados, es nada más por una simple coincidencia. Pero prueba poniendo campos NULL tanto en A como en B con ambas consultas. Deberías obtener "lijeras" diferencias. Eso dice la teoría.
Ahora bien... si debo aclarar algunas cuestiones respecto a la práctica: algunos motores asumen un where del tipo:
TablaA.Campo1 = TablaB.Campo1
como un join implícito (como por ejemplo, Firebird) y convierten a esa condición en un join. Eso hace, y explica, el porqué se obtiene el mismo resultado.
Hay consultas en las que se puede esperar el uso del where, mientras que hay otras en las que obligadamente se debe hacer uso de un join. De cualquier forma el join es el método más seguro y está mejor preparado y optimizado por todos los motores para hacer una coincidencia entre dos campos de dos tablas.
Por seguridad y estabilidad, prímese el uso de JOIN; sobre todo los explícitos.
Saludos,