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
可以更清晰地阅读,特别是如果查询包含其他连接类型(即, LEFT
或RIGHT
或CROSS
)。
只需键入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" JOIN
的LEFT
或RIGHT
关键字。
然而,由于某种原因,我总是使用"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;