È vero che entrambe le forme di sintassi dovrebbero dare lo stesso risultato e internamente MySQL le esegue entrambe esattamente allo stesso modo. Le versioni attuali dello standard SQL supportano entrambi i moduli, sebbene lo stile virgola sia supportato solo per motivi di compatibilità con le versioni precedenti.
C'è un caso in cui l'utilizzo della sintassi in stile virgola non riesce, ma è esotico:
SELECT * FROM A, B JOIN C ON C.x = A.y;
Il JOIN
l'operatore ha una precedenza maggiore della virgola. Quindi, poiché la query precedente sta cercando di valutare C.x = A.y
non sa nemmeno che A
fa parte della query. Quindi ottieni un errore:
ERROR 1054 (42S22): Unknown column 'A.y' in 'on clause'
Il miglior rimedio è usare il JOIN
sintassi in modo coerente invece di mescolarli.
Inoltre, non puoi creare join esterni con la sintassi virgola-join. Oracle e Sybase/Microsoft hanno inventato ciascuno la propria sintassi proprietaria per la gestione degli outer join, ma nessuno dei due è supportato da altri marchi di RDBMS. Oggi, tutte le versioni correnti di RDBMS, inclusi Oracle e Sybase/Microsoft, supportano lo standard JOIN
sintassi, quindi non c'è un buon motivo per utilizzare le estensioni specifiche del fornitore legacy.