这两加入会给我同样的结果:差异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实现中有所不同吗?
这两加入会给我同样的结果:差异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
)。
不,没有区别,纯syntactic sugar。
OUTER JOINs
字
"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
INNER JOIN是如果您在使用单词JOIN时没有指定类型,则为默认值。
您还可以使用LEFT OUTER JOIN或RIGHT OUTER JOIN,在这种情况下OUTER字可选, 或者您可以指定CROSS JOIN。
OR
对于内部联接,语法是:
SELECT ...
FROM表A
[INNER] JOIN表B(换言之, “INNER”关键字是可选 - 结果与 相同或不同)
它在不同的SQL实现之间有所不同吗?
是的,MS Access不允许只是join
它需要inner join
。
图片提供:由于其他答案已经说明存在无差异你的榜样。
语法的相关位为documented here
<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;
的例子见这样的问题: –
2009-02-19 14:50:00
作为附带说明:CROSS JOIN是一个很高兴知道连接类型(它不同于INNER JOIN)。 – Serge 2013-05-14 11:57:02
应该重新打开,因为其他问题表示为等效的不是。 OP询问在写入JOIN或INNER JOIN时是否有区别 – 2014-07-02 12:06:27