Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Alguém pode ajudar a explicar por que não usar um SQL JOIN é uma prática ruim e errada?


É 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.