这两个连接都会给我相同的结果:
SELECT * FROM table JOIN otherTable ON table.ID = otherTable.FK
VS
SELECT * FROM table INNER JOIN otherTable ON table.ID = otherTable.FK
表现或其他方面的陈述是否有任何区别?
不同的SQL实现之间是否有所不同?
与 OUTER JOINs 类似,单词 "OUTER" 是可选的 . LEFT 或 RIGHT 关键字使 JOIN 成为 "OUTER" JOIN .
OUTER JOINs
"OUTER"
LEFT
RIGHT
JOIN
"OUTER" JOIN
但是出于某种原因,我总是使用 "OUTER" ,如 LEFT OUTER JOIN ,而不是 LEFT JOIN ,但我从不使用 INNER JOIN ,而是我只使用 "JOIN" :
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 可以更清楚地读取,特别是如果查询中包含其他连接类型(即 LEFT 或 RIGHT 或 CROSS ) .
CROSS
正如其他答案已经说明的那样,你的例子没有区别 .
相关的语法位是documented here
<join_type> ::= [ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ] JOIN
显示所有都是可选的 . 该页面进一步阐明了这一点
INNER指定返回所有匹配的行对 . 丢弃两个表中不匹配的行 . 如果未指定连接类型,则这是默认值 .
语法也表明有一次需要 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;
输入 JOIN 默认情况下执行 INNER JOIN .
对于所有其他人来说,一张图片有时候 Value 超过几百个字:
图片由Code Project提供 .
不,没有区别,纯粹syntactic sugar .
INNER JOIN = JOIN:
如果在使用单词JOIN时未指定类型,则INNER JOIN是默认值 . 您也可以使用LEFT OUTER JOIN或RIGHT OUTER JOIN,在这种情况下,单词OUTER是可选的,或者您可以指定CROSS JOIN .
要么
对于内部联接,语法为:SELECT ... FROM TableA [INNER] JOIN TableB(换句话说,“INNER”关键字是可选的 - 结果是否相同,有或没有)
不同的SQL实现之间有什么不同?
是的,Microsoft Access不允许 join . 它需要inner join .
join
7 回答
与
OUTER JOINs
类似,单词"OUTER"
是可选的 .LEFT
或RIGHT
关键字使JOIN
成为"OUTER" JOIN
.但是出于某种原因,我总是使用
"OUTER"
,如LEFT OUTER JOIN
,而不是LEFT JOIN
,但我从不使用INNER JOIN
,而是我只使用"JOIN"
:它们在功能上是等价的,但是
INNER JOIN
可以更清楚地读取,特别是如果查询中包含其他连接类型(即LEFT
或RIGHT
或CROSS
) .正如其他答案已经说明的那样,你的例子没有区别 .
相关的语法位是documented here
显示所有都是可选的 . 该页面进一步阐明了这一点
语法也表明有一次需要
INNER
. 指定连接提示时 .请参阅下面的示例
输入
JOIN
默认情况下执行INNER JOIN
.对于所有其他人来说,一张图片有时候 Value 超过几百个字:
图片由Code Project提供 .
不,没有区别,纯粹syntactic sugar .
INNER JOIN = JOIN:
要么
是的,Microsoft Access不允许
join
. 它需要inner join .