之间的区别是什么 LEFT JOINLEFT OUTER JOIN?

有帮助吗?

解决方案

根据文档: FROM(Transact-SQL )

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

关键字 OUTER 被标记为可选(括在方括号中),在这种情况下,这意味着无论您是否指定它都没有区别。请注意,虽然join子句的其他元素也标记为可选,但将它们排除在外当然会产生影响。

例如, 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

另请参阅我在其他问题上留下的答案: SQL离开连接与FROM行上的多个表?

其他提示

  

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

<强>没有即可。 LEFT JOIN LEFT OUTER JOIN 是等效的。

我是PostgreSQL DBA,据我所知,外部或非外部联接之间的区别差异是一个在互联网上有相当多讨论的话题。直到今天,我从未看到过这两者之间的差异;所以我走得更远,我试图找到它们之间的区别。 最后,我阅读了有关它的整个文档,我找到了答案,

因此,如果您查看文档(至少在PostgreSQL中),您可以找到以下短语:

&quot; INNER 并且 OUTER 在所有形式中都是可选的。 INNER 是默认值; LEFT RIGHT FULL 意味着外部联接。&quot;

换句话说,

LEFT JOIN LEFT OUTER JOIN 是相同的

RIGHT JOIN RIGHT OUTER JOIN 是相同的

我希望它能为那些仍在努力找到答案的人做出贡献。

左连接左外连接是一个,相同。前者是后者的简写。关于 Right Join Right Outer Join 关系,也可以这样说。示威将说明平等。每个查询的工作示例都是通过 SQL Fiddle 提供的。该工具将允许动手操作查询。

<强>鉴于

左连接左外加入

<强>结果


正确加入正确的外部加入

<强>结果

我发现更容易想在加入以下顺序:

  • 横加入-笛卡尔的产品的两个表格中。所有连接这里开始
  • 内加入一个交叉参加有一个过滤器加。
  • 外加入一个内加入与缺少的元素(从左或右表) 加入之后。

直到我想出了这一点(相对)的简单模型,加入了总是多一点的一个黑色的艺术。现在他们有完美的意义。

希望这可以帮助超过它混淆了.

为什么LEFT / RIGHT和LEFT OUTER / RIGHT OUTER相同?让我们解释为什么这个词汇。 理解LEFT和RIGHT连接是OUTER连接的特定情况,因此不能是OUTER LEFT / OUTER RIGHT以外的任何其他连接。 OUTER联接也称为 FULL OUTER,而不是OUTER联接的 PARTIAL 结果的LEFT和RIGHT联接。事实上:

Table A | Table B     Table A | Table B      Table A | Table B      Table A | Table B
   1    |   5            1    |   1             1    |   1             1    |   1
   2    |   1            2    |   2             2    |   2             2    |   2
   3    |   6            3    |  null           3    |  null           -    |   -
   4    |   2            4    |  null           4    |  null           -    |   -
                        null  |   5             -    |   -            null  |   5
                        null  |   6             -    |   -            null  |   6

                      OUTER JOIN (FULL)     LEFT OUTER (partial)   RIGHT OUTER (partial)

现在很清楚为什么这些操作有别名,而且很明显只有3种情况:INNER,OUTER,CROSS。有两个子案例用于OUTER。 词汇,教师解释这一点的方式,以及上面的一些答案,往往使它看起来有很多不同类型的连接。但实际上非常简单。

回答你的问题

  

在Sql Server连接语法 OUTER 是可选的

在msdn文章中提到: https: //msdn.microsoft.com/en-us/library/ms177634(v=sql.130).aspx

以下列表显示了使用和不使用 OUTER

的连接等效语法
LEFT OUTER JOIN => LEFT JOIN
RIGHT OUTER JOIN => RIGHT JOIN
FULL OUTER JOIN => FULL JOIN

其他等效语法

INNER JOIN => JOIN
CROSS JOIN => ,

强烈推荐Dotnet Mob Artice:加入Sql Server

主要有三种类型的加入

  1. 内部:获取数据,存在两个表
    • 只有加入装置内加入
  2. 外:有三种类型

    • 左外获取的数据仅存在左表和匹配条件
    • 右外获取的数据仅存在的权利表和匹配条件
    • 全外获取数据存在任何或两个表
    • (左边的或正确或完整的)外加入可以写w/o写的"外"
  3. 横加入:加入的一切的一切

只有3个加入:

  • A)横加入=笛卡尔(例如:表一、表格B)
  • B)内加入=加入(例如:表A的加入/内加入表 B)
  • C)外加入:

       There are three type of outer join
       1)  Left Outer Join     = Left Join
       2)  Right Outer Join    = Right Join
       3)  Full Outer Join     = Full Join    
    

希望这会有帮助。

句法糖,让随意的读者更明显地认为连接不是内在的。

只是在上下文中的这个问题,我希望以后的2"应用"经营者,以及:

加入:

  1. 内加入 =加入

  2. 外加入

    • 左外加入=左加入

    • 右外部参加=右加入

    • 充分外加入=充分加入

  3. 横加入

自加入:这不正是一个独立的种类型的加入。这基本上是参加表本身使用一个以上联接。但我觉得值得一提的是在上下文中加入的讨论为你会听到这个词,从许多在SQL开发社区。

适用:

  1. 交申请 --类似于内加入(但已经加入的优势,能够计算的东西在正确的表每一行中的左表和会只返回匹配的行)
  2. 外适用 --类似于左外加入(但已经加入的优势,能够计算的东西在正确的表每一行中的左表和将要返回的所有行左表不论的一匹配上的权利表)

https://www.mssqltips.com/sqlservertip/1958/sql-server-cross-apply-and-outer-apply/

https://sqlhints.com/2016/10/23/outer-apply-in-sql-server/

现实生活的例子中,当使用外交叉适用于SQL

我找到适用的操作者非常有益,因为他们得到更好的性能比拥有这样做的计算中的一个子查询。他们也被更换的许多分析职能在旧版本的SQL服务器。这就是为什么我相信,在适用加入一SQL开发者应该试图了解适用运营商的下一步。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top