在SQL Server中,LEFT JOIN与LEFT OUTER JOIN的区别

38 浏览
0 Comments

在SQL Server中,LEFT JOIN与LEFT OUTER JOIN的区别

什么是 LEFT JOINLEFT OUTER JOIN 之间的差异?

admin 更改状态以发布 2023年5月21日
0
0 Comments

回答你的问题,LEFT JOIN和LEFT OUTER JOIN之间没有任何区别,它们完全相同,也就是说...

在顶层,主要有三种类型的连接:

  1. 内连接
  2. 外连接
  3. 交叉连接

  1. 内连接 - 仅在两个表中都存在数据时获取数据。

  2. 外连接分为3种:

    1. LEFT OUTER JOIN - 仅从左表中获取存在的数据。
    2. RIGHT OUTER JOIN - 仅从右表中获取存在的数据。
    3. FULL OUTER JOIN - 获取两个表中任意一个存在的数据。
  3. 交叉连接直接给出所有可能的匹配组合([n X m]),类似于列出要连接的表(在SELECT语句的FROM子句中),用逗号分隔它们的情况。


需要注意的几点:

  • 如果只提到JOIN,则默认是INNER JOIN
  • OUTER连接必须为LEFT | RIGHT | FULL,不能简单地说OUTER JOIN
  • 您可以删除OUTER关键字,只使用LEFT JOINRIGHT JOINFULL JOIN

想更好地可视化这些内容的人,请访问此链接:SQL连接的可视化解释

0
0 Comments

根据文档:FROM(Transact-SQL): \n\n

 ::= 
    [ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [  ] ]
    JOIN

\n\n关键词OUTER被标记为可选的(用方括号括起来)。 在这种情况下,无论您是否指定OUTER都没有影响。 请注意,虽然联接子句的其他元素也被标记为可选的,但省略它们会导致不同的结果。 \n\n例如,整个JOIN子句的类型部分是可选的,若省略,则默认为INNER。 换句话说,以下语法是合法的: \n\n

SELECT *
FROM A JOIN B ON A.X = B.Y

\n\n以下是等效语法的列表: \n\n

A LEFT JOIN B            A LEFT OUTER JOIN B
A RIGHT JOIN B           A RIGHT OUTER JOIN B
A FULL JOIN B            A FULL OUTER JOIN B
A INNER JOIN B           A JOIN B

\n\n还可以看看我在此Stack Overflow问题上留下的答案:SQL左联接与多个表的FROM行有什么不同?

0