Mysql
 sql >> Database >  >> RDS >> Mysql

Qual è il comportamento predefinito di MySQL JOIN, INNER o OUTER?

In MySQL scrivendo JOIN non qualificato implica INNER JOIN . In altre parole il INNER in INNER JOIN è facoltativo. INNER e CROSS sono sinonimi in MySQL. Per chiarezza scrivo JOIN o INNER JOIN se ho una condizione di adesione e CROSS JOIN se non ho una condizione.

La sintassi consentita per i join è descritta nella documentazione .

L'effetto è lo stesso, ma la storia dietro di loro è diversa. La sintassi della virgola è dello standard ANSI-89. Tuttavia ci sono una serie di problemi con questa sintassi, quindi nello standard ANSI-92 è stata introdotta la parola chiave JOIN.

Ti consiglio vivamente di sempre usa la sintassi JOIN anziché la virgola.

  • T1 JOIN T2 ON ... è più leggibile di T1, T2 WHERE ... .
  • È più gestibile perché le relazioni tra le tabelle ei filtri sono chiaramente definiti anziché mescolati insieme.
  • La sintassi JOIN è più facile da convertire in OUTER JOIN rispetto alla sintassi della virgola.
  • Miscelare la virgola e la sintassi JOIN nella stessa istruzione può dare curiosi errori dovuti alle regole di precedenza.
  • È meno probabile che si crei accidentalmente un prodotto cartesiano quando si utilizza la sintassi JOIN a causa di una clausola di join dimenticata, perché le clausole di join sono scritte accanto ai join ed è facile vedere se ne manca una.