SQL Server JOIN和INNER JOIN之间的差异

mec1mxoz  于 2022-11-21  发布在  其他
关注(0)|答案(6)|浏览(245)

这 两 个 联接 将 得到 相同 的 结果 :

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

中 的 每 一 个
对比

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

格式
这 两 种 说法 在 表现 或 其他 方面 有 什么 不同 吗 ?
不同 的 * * SQL * * 实现 之间 是否 有 差异 ?

taor4pac

taor4pac1#

它们在功能上是等效的,但是INNER JOIN读起来可能更清楚一些,特别是当查询中包含其他连接类型(即LEFTRIGHTCROSS)时。

fiei3ece

fiei3ece2#

不,没有区别,纯粹的syntactic sugar

k0pti3hp

k0pti3hp3#

内部 联接 = 联接

  • 如果 在 使用 JOIN 一 词 时 没有 指定 * * 类型 , 则 INNER JOIN 是 * * 默认 值 。

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

  • 对于 INNER JOIN , 语法 为 :
SELECT ...
FROM TableA
[INNER] JOIN TableB

中 的 每 一 个
(In换 句 话说 , INNER 关键 字 是 * * optional * * - - 无论 是否 使用 它 , 结果 都 是 相同 的 。 )

4nkexdtk

4nkexdtk4#

不同的SQL实现之间是否存在差异?
是的,Microsoft Access不仅允许join,它还需要inner join

hjzp0vay

hjzp0vay5#

OUTER JOINs类似,单词"OUTER"也是可选的,是LEFTRIGHT关键字使JOIN成为"OUTER" JOIN
然而,由于某种原因,我总是像在LEFT OUTER JOIN中那样使用"OUTER",而从不使用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
pengsaosao

pengsaosao6#

正如 其他 答案 已经 指出 的 那样 , 在 你 的 例子 中 没有 区别 。
语法 的 相关 位 是 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;

格式

相关问题