LEFT JOIN和LEFT OUTER JOIN有什么区别?
LEFT JOIN
LEFT OUTER JOIN
左连接和左向外连接有什么区别?
LEFT JOIN和LEFT OUTER JOIN是等价的。
留档:从(事务-SQL):
<join_type> ::=[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]JOIN
关键字OUTER被标记为可选(用方括号括起来)。在这种情况下,您是否指定OUTER没有任何区别。请注意,虽然连接子句的其他元素也被标记为可选,但留下他们而不是将会有所不同。
OUTER
例如,JOIN子句的整个type-part是可选的,在这种情况下,如果您只指定JOIN,则默认为INNER。换句话说,这是合法的:
JOIN
INNER
SELECT *FROM A JOIN B ON A.X = B.Y
以下是等效语法的列表:
A LEFT JOIN B A LEFT OUTER JOIN BA RIGHT JOIN B A RIGHT OUTER JOIN BA FULL JOIN B A FULL OUTER JOIN BA INNER JOIN B A JOIN B
也看看我在另一个SO问题上留下的答案:SQL左连接vs多个表上从行?。
语法糖,使它更明显的休闲读者,连接不是一个内在的。
我是PostgreSQL DBA,就我所能理解的外连接与非外连接之间的区别是一个在互联网上有相当多讨论的话题。直到今天,我从未看到这两者之间的区别;所以我更进一步,试图找到它们之间的区别。最后我读了整个留档,我找到了答案,
因此,如果你查看留档(至少在PostgreSQL中),你可以找到这个短语:
"单词#0和#1在所有形式中都是可选的。#0是默认值;#3、#4和#5暗示外部连接。"
换句话说,
LEFT JOIN和LEFT OUTER JOIN是一样的
RIGHT JOIN和RIGHT OUTER JOIN是一样的
RIGHT JOIN
RIGHT OUTER JOIN
我希望这对那些仍在努力寻找答案的人有所帮助。
要回答你的问题,左加入之间没有区别和LEFT OUTER JOIN,他们是完全相同的说…
INNER JOIN-如果两个表中都存在,则获取数据。
外部连接是3类型:
FULL OUTER JOIN
交叉连接,顾名思义,[n X m]将一切连接到一切。类似于我们简单地列出要连接的表的场景(在SELECT语句的FROM子句中),使用逗号分隔它们。
[n X m]
SELECT
FROM
注意事项:
INNER JOIN
LEFT
RIGHT
FULL
OUTER JOIN
FULL JOIN
对于那些想以更好的方式可视化这些的人,请访问此链接:SQL连接的可视化解释
我发现按照以下顺序更容易想到连接:
在我想出这个(相对)简单的模型之前,JOINS一直是一种黑色艺术。现在它们完全有意义了。
希望这能帮助更多比它混淆。
主要有三种类型的JOIN
外部:有三种类型
交叉连接:将一切连接到一切
为什么左/右和左/右是一样的?让我们解释一下为什么这个词汇。了解LEFT和Right连接是OUTER连接的特定情况,因此只能是OUTER LEFT/OUTER Right。OUTER连接也称为完整 OUTER,而不是OUTER连接的部分结果的左连接和右连接。确实:
Table A | Table B Table A | Table B Table A | Table B Table A | Table B1 | 5 1 | 1 1 | 1 1 | 12 | 1 2 | 2 2 | 2 2 | 23 | 6 3 | null 3 | null - | -4 | 2 4 | null 4 | null - | -null | 5 - | - null | 5null | 6 - | - null | 6 OUTER JOIN (FULL) LEFT OUTER (partial) RIGHT OUTER (partial)
现在很清楚为什么这些操作有别名,也很清楚只存在3种情况:INNER、OUTER、CROSS。OUTER有两个子情况。词汇,老师解释这个的方式,以及上面的一些答案,通常看起来有很多不同类型的连接。但实际上非常简单。
Left Join和Left Outer Join是一个和相同。前者是后者的简写。Right Join和Right Outer Join的关系也是如此。演示将说明相等性。通过SQL小提琴提供了每个查询的工作示例。该工具将允许动手操作查询。
Left Join
Left Outer Join
Right Join
Right Outer Join
鉴于
左连接和左外连接
搜索结果
右连接和右外连接
来回答你的问题
在SQL Server中,连接语法外部是可选的
在msdn文章中提到:https://msdn.microsoft.com/en-us/library/ms177634(v=sql.130). aspx
因此,以下列表显示了使用和不使用外部的连接等效语法
LEFT OUTER JOIN => LEFT JOINRIGHT OUTER JOIN => RIGHT JOINFULL OUTER JOIN => FULL JOIN
其他等效语法
INNER JOIN => JOINCROSS JOIN => ,
强烈推荐Dotnet Mob Artis:加入Sql服务器
A)交叉连接=笛卡尔(例如:表A,表B)
B)内连接=连接(例如:表A连接/内连接表B)
C)外连接:
有三种类型的外连接
在这个问题的背景下,我也想发布两个“应用”运算符:
加入:
内部连接=连接
外部连接
左外接=左接
右外连接=右连接
完全外部连接=完全连接
交叉连接
自加入:这不是一种单独的连接类型。这基本上是使用上述连接之一将表自身连接起来。但我觉得在JOIN讨论中值得一提,因为您会从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中使用OUTER/CROSS APPLY
我发现APPLY运算符非常有用,因为它们比在子查询中执行相同的计算提供更好的性能。它们还替换了旧版本SQLServer中的许多分析函数。这就是为什么我相信在熟悉JOINS之后,SQL开发人员应该尝试下一步学习APPLY运算符。