这两个连接都会得到相同的结果:

SELECT * FROM table JOIN otherTable ON table.ID = otherTable.FK

vs

SELECT * FROM table INNER JOIN otherTable ON table.ID = otherTable.FK

这些陈述在性能或其他方面有什么区别吗?

不同的SQL实现之间有区别吗?


当前回答

与OUTER join类似,单词“OUTER”是可选的。LEFT或RIGHT关键字使JOIN成为“OUTER”JOIN。

然而,出于某种原因,我总是使用“OUTER”作为LEFT OUTER JOIN,从不使用LEFT JOIN,但我从不使用INNER JOIN,而只是使用“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

其他回答

内部连接=连接

如果在使用JOIN时没有指定类型,则INNER JOIN是默认值。 您还可以使用LEFT OUTER JOIN或RIGHT OUTER JOIN,在这种情况下,单词OUTER是可选的,或者您可以指定CROSS JOIN。

OR

对于INNER JOIN,语法是: 选择…… 从为多 JOIN TableB (换句话说,INNER关键字是可选的——使用或不使用它的结果是相同的。)

与OUTER join类似,单词“OUTER”是可选的。LEFT或RIGHT关键字使JOIN成为“OUTER”JOIN。

然而,出于某种原因,我总是使用“OUTER”作为LEFT OUTER JOIN,从不使用LEFT JOIN,但我从不使用INNER JOIN,而只是使用“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

不,没有区别,纯粹的语法糖。

不同的SQL实现之间有区别吗?

是的,Microsoft Access不仅仅允许加入。它需要内部连接。

它们在功能上是等价的,但是INNER JOIN读起来更清楚一些,特别是当查询中包含其他连接类型(例如LEFT、RIGHT或CROSS)时。