这两个连接将给我相同的结果:
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
类型(即LEFT
或RIGHT
或CROSS
)的情况下。
不,没有区别,纯语法糖 。
内联接 = 联接
如果在使用单词 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;