JOIN 和 INNER JOIN 之间的区别

这两个连接将给我相同的结果:

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

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

语句之间的性能或其他方面是否有区别?

不同的 SQL 实现之间是否有所不同?

答案

它们在功能上是等效的,但是INNER JOIN可能更清晰易读,尤其是在查询中包含其他INNER JOIN类型(即LEFTRIGHTCROSS )的情况下。

不,没有区别,纯语法糖

内联接 = 联接

如果在使用单词 JOIN 时未指定类型,则默认为 INNER JOIN。

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

要么

对于内部联接,语法为:

选择 ...
从表 A
[内部] 加入 TableB

(换句话说,“INNER” 关键字是可选的 - 无论有没有关键字,结果都是相同的)

不同的 SQL 实现之间是否有所不同?

是的, Microsoft Access不允许只join 。它需要inner 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
<join_type> ::= 
    [ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
    JOIN
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;