JOIN和INNER JOIN的区别

这两个连接都会给我同样的结果:

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

VS

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

在演出或其他方面的表述是否有区别?

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

它们在功能上是等价的,但是INNER JOIN可以更清晰地阅读,特别是如果查询包含其他连接类型(即, LEFTRIGHTCROSS )。

只需键入JOIN默认情况下执行INNER JOIN

对于所有其他人来说,一张照片有时候超过几百个字:

在这里输入图像描述

图片由CodeProject提供


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

INNER JOIN = JOIN :

如果在使用单词JOIN时未指定类型, INNER JOIN是默认值

您也可以使用LEFT OUTER JOIN或RIGHT OUTER JOIN,在这种情况下OUTER是可选的,或者您可以指定CROSS JOIN。

要么

对于内部连接,语法是:

选择 …
FROM TableA
[INNER]加入表B

(换句话说,“INNER”关键字是可选的 – 结果是相同或不相同的)

OUTER JOINs类似,单词"OUTER"是可选的,它是使JOIN成为"OUTER" JOINLEFTRIGHT关键字。

然而,由于某种原因,我总是使用"OUTER"LEFT OUTER JOIN并从来没有LEFT 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实现之间有区别吗?

是的,MS Access不允许只join它需要inner join

由于其他答案已经说明你的例子没有什么区别。

这里记录了相关的语法位

 <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; 

在这里输入图像描述