Entrambe queste unioni mi daranno gli stessi risultati:
SELECT * FROM table JOIN otherTable ON table.ID = otherTable.FK
vs
SELECT * FROM table INNER JOIN otherTable ON table.ID = otherTable.FK
C'è qualche differenza tra le dichiarazioni nelle prestazioni o altro?
C'è differenza tra le diverse implementazioni di SQL?
Sono funzionalmente equivalenti, ma INNER JOIN
può essere un po' più chiaro da leggere, specialmente se la query ha altri tipi di join (cioè LEFT
o RIGHT
o CROSS
) inclusi in essa.
Allo stesso modo con le OUTER JOIN
, la parola "OUTER"
è opzionale. È la parola chiave LEFT
o RIGHT
che rende la JOIN
una "OUTER" JOIN
.
Tuttavia per qualche ragione uso sempre "OUTER"
come in LEFT OUTER JOIN
e mai LEFT JOIN
, ma non uso mai INNER JOIN
, ma piuttosto uso semplicemente "JOIN"
:
SELECT ColA, ColB, ...
FROM MyTable AS T1
JOIN MyOtherTable AS T2
ON T2.ID = T1.ID
LEFT OUTER JOIN MyOptionalTable AS T3
ON T3.ID = T1.ID