左参与左外加入SQL服务器
-
03-07-2019 - |
题
之间的区别是什么 LEFT JOIN
和 LEFT 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行上的多个表?一>
其他提示
来回答你的问题 没有任何差异之间的左边加入 和左外部参加,它们是完全相同 那所说的...
在顶级主要有3种类型的联接:
- 内
- 外
- 交叉
内加入 -获取的数据,如果存在两个表格。
外加入 是的 3 类型:
LEFT OUTER JOIN
-获取的数据,如果本在左表。RIGHT OUTER JOIN
-获取的数据,如果存在的权利表。FULL OUTER JOIN
-获取的数据,如果存在两个表格。
横加入, 顾名思义,不
[n X m]
加入的一切的一切。
类似的情况,我们只是列出了表参加(在FROM
条款SELECT
发言),采用逗号分开。
要点指出:
- 如果你只是说
JOIN
然后默认这是一个INNER JOIN
. - 一个
OUTER
加入已LEFT
|RIGHT
|FULL
你不能简单地说OUTER JOIN
. - 你可以放下
OUTER
关键词,只是说LEFT JOIN
或RIGHT JOIN
或FULL JOIN
.
对于那些想想象,这些在一个更好的方式,请去这个的链接:一些解释SQL加入
左连接和左外连接有什么区别?
<强>没有即可。 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
是相同的
我希望它能为那些仍在努力找到答案的人做出贡献。
我发现更容易想在加入以下顺序:
- 横加入-笛卡尔的产品的两个表格中。所有连接这里开始
- 内加入一个交叉参加有一个过滤器加。
- 外加入一个内加入与缺少的元素(从左或右表) 加入之后。
直到我想出了这一点(相对)的简单模型,加入了总是多一点的一个黑色的艺术。现在他们有完美的意义。
希望这可以帮助超过它混淆了.
为什么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
主要有三种类型的加入
- 内部:获取数据,存在两个表
- 只有加入装置内加入
外:有三种类型
- 左外获取的数据仅存在左表和匹配条件
- 右外获取的数据仅存在的权利表和匹配条件
- 全外获取数据存在任何或两个表
- (左边的或正确或完整的)外加入可以写w/o写的"外"
横加入:加入的一切的一切
只有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"应用"经营者,以及:
加入:
内加入 =加入
外加入
左外加入=左加入
右外部参加=右加入
充分外加入=充分加入
横加入
自加入:这不正是一个独立的种类型的加入。这基本上是参加表本身使用一个以上联接。但我觉得值得一提的是在上下文中加入的讨论为你会听到这个词,从许多在SQL开发社区。
适用:
- 交申请 --类似于内加入(但已经加入的优势,能够计算的东西在正确的表每一行中的左表和会只返回匹配的行)
- 外适用 --类似于左外加入(但已经加入的优势,能够计算的东西在正确的表每一行中的左表和将要返回的所有行左表不论的一匹配上的权利表)
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开发者应该试图了解适用运营商的下一步。