SQL Server中的左加入与左外部加入

LEFT JOINLEFT OUTER JOIN什么区别?


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

<join_type> ::= 
    [ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
    JOIN

关键字OUTER被标记为可选项(用方括号括起来),这意味着在这种情况下是否指定它并没有区别。 请注意,虽然连接子句的其他元素也标记为可选,但将它们排除在外当然会有所作为。

例如, JOIN子句的整个类型部分是可选的,在这种情况下,如果您只指定了JOIN ,则缺省值为INNER 。 换句话说,这是合法的:

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

以下是等效语法的列表:

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

另外看看我在这个其他SO问题上留下的答案:SQL left join与FROM行上的多个表吗?

在这里输入图像描述


为了回答你的问题,LEFT JOIN和LEFT OUTER JOIN之间没有区别,他们完全一样 ,说...

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

  • 交叉

  • INNER JOIN - 如果存在于两个表中,则获取数据。

  • OUTER JOIN3种类型:

  • LEFT OUTER JOIN - 如果存在于左表中,则获取数据。
  • RIGHT OUTER JOIN - 获取右表中的数据。
  • FULL OUTER JOIN - 提取数据(如果存在于两个表中的任何一个中)。
  • 正如名字所暗示的, CROSS JOIN确实将[n X m]加入到所有事物中。
    类似于我们仅仅列出要加入的表(在SELECT语句的FROM子句中),使用逗号分隔它们的情况。


  • 需要注意的是:

  • 如果你只是提到JOIN那么默认情况下它是一个INNER JOIN
  • OUTER连接必须是LEFT | RIGHT | FULL你不能简单地说OUTER JOIN
  • 您可以删除OUTER关键字,只需说出LEFT JOINRIGHT JOINFULL JOIN

  • 对于那些想要以更好的方式可视化这些内容的人,请转到此链接:SQL连接的可视化解释


    左连接和左外连接有什么区别?

    没什么LEFT JOINLEFT OUTER JOIN是等价的。

    链接地址: http://www.djcxy.com/p/7655.html

    上一篇: LEFT JOIN vs. LEFT OUTER JOIN in SQL Server

    下一篇: Why are parameters slower than literal values in a where clause?