这两个连接都会得到相同的结果:
SELECT * FROM table JOIN otherTable ON table.ID = otherTable.FK
vs
SELECT * FROM table INNER JOIN otherTable ON table.ID = otherTable.FK
这些陈述在性能或其他方面有什么区别吗?
不同的SQL实现之间有区别吗?
这两个连接都会得到相同的结果:
SELECT * FROM table JOIN otherTable ON table.ID = otherTable.FK
vs
SELECT * FROM table INNER JOIN otherTable ON table.ID = otherTable.FK
这些陈述在性能或其他方面有什么区别吗?
不同的SQL实现之间有区别吗?
当前回答
内部连接=连接
如果在使用JOIN时没有指定类型,则INNER JOIN是默认值。 您还可以使用LEFT OUTER JOIN或RIGHT OUTER JOIN,在这种情况下,单词OUTER是可选的,或者您可以指定CROSS JOIN。
OR
对于INNER JOIN,语法是: 选择…… 从为多 JOIN TableB (换句话说,INNER关键字是可选的——使用或不使用它的结果是相同的。)
其他回答
内部连接=连接
如果在使用JOIN时没有指定类型,则INNER JOIN是默认值。 您还可以使用LEFT OUTER JOIN或RIGHT OUTER JOIN,在这种情况下,单词OUTER是可选的,或者您可以指定CROSS JOIN。
OR
对于INNER JOIN,语法是: 选择…… 从为多 JOIN TableB (换句话说,INNER关键字是可选的——使用或不使用它的结果是相同的。)
不,没有区别,纯粹的语法糖。
不同的SQL实现之间有区别吗?
是的,Microsoft Access不仅仅允许加入。它需要内部连接。
正如其他答案已经说明的那样,在你的例子中没有区别。
相关的语法记录在这里
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
显示所有都是可选的。这篇文章进一步阐明了这一点
INNER返回所有匹配的行对。丢弃 两个表中不匹配的行。当未指定连接类型时,此 是默认值。
语法还指出,有一种情况需要使用INNER。当指定连接提示时。
参见下面的示例
CREATE TABLE T1(X INT);
CREATE TABLE T2(Y INT);
SELECT *
FROM T1
LOOP JOIN T2
ON X = Y;
SELECT *
FROM T1
INNER LOOP JOIN T2
ON X = Y;
它们在功能上是等价的,但是INNER JOIN读起来更清楚一些,特别是当查询中包含其他连接类型(例如LEFT、RIGHT或CROSS)时。