join 的不同组合令人困惑,有人可以简化一下吗?

Med*_*Man 3 sql t-sql sql-server sql-server-2005

这个周末正在看 JOIN。

我正在阅读 Join 并看到大量 JOIN、LEFT、RIGHT、OUTER、FULL、INNER 的组合。我检查了 MSDN 文档,看起来唯一允许的组合采用以下形式:

< join_type > ::=
    [ INNER | { { LEFT | RIGHT | FULL } [ OUTER] } ]
    [ < join_hint > ]
    JOIN
Run Code Online (Sandbox Code Playgroud)

因此,我认为你只能得到:

JOIN / INNER JOIN
LEFT JOIN / LEFT OUTER JOIN
RIGHT JOIN / RIGHT OUTER JOIN
FULL JOIN / FULL OUTER JOIN
Run Code Online (Sandbox Code Playgroud)

另外,OUTER 似乎是一个可选关键字,因此 LEFT JOIN 和 LEFT OUTER JOIN 实际上是相同的。它是否正确?JOIN 和 FULL OUTER JOIN 有什么区别?我在脚本中单独看到过 JOIN,但无法将其分解,因为查询有点复杂。

Joe*_*orn 5

连接只有三种:CROSS、INNER 和 OUTER。

  • 交叉联接返回两个表中行的所有可能组合,但不经常使用。
  • 内连接仅返回两个表均符合连接条件的 行。
  • 外连接选择一个表作为“原始”表,并且始终返回该表中的所有行。只要其他表中没有匹配项,就会提供 NULL 值。

在外连接(并且仅是外连接)中,还存在三种子类型:LEFT、RIGHT 和 FULL。

  • 对于左连接,第一个表是原始表。
  • 对于右连接,第二个表是原始表。
  • 对于完全连接,两个表都是原始表。

由于 LEFT、RIGHT 和 FULL 仅适用于 OUTER 连接,因此有时会省略 OUTER 关键字,而只是指定哪种类型的外连接(即仅“LEFT JOIN”)。