KG *_*osa 1514 t-sql sql-server left-join outer-join
LEFT JOIN和之间有什么区别LEFT OUTER JOIN?
ang*_*son 2158
根据文档:FROM(Transact-SQL):
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
Run Code Online (Sandbox Code Playgroud)
关键字OUTER被标记为可选(括在方括号中),在这种情况下,这意味着无论您是否指定它都没有区别.请注意,虽然join子句的其他元素也标记为可选,但将它们排除在外当然会产生影响.
例如,OUTER子句的整个类型部分是可选的,在这种情况下,默认值是JOIN您只需指定INNER.换句话说,这是合法的:
SELECT *
FROM A JOIN B ON A.X = B.Y
Run Code Online (Sandbox Code Playgroud)
这是一个等效语法列表:
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
Run Code Online (Sandbox Code Playgroud)
另外看看我在另一个问题上留下的答案:SQL左连接与FROM线上的多个表?.

sac*_*tiw 689
要回答你的问题,LEFT JOIN和LEFT OUTER JOIN之间没有区别,它们完全相同 ...
INNER JOIN - 如果两个表中都存在数据,则获取数据.
OUTER JOIN有3种类型:
LEFT OUTER JOIN - 如果左表中存在数据,则获取数据.RIGHT OUTER JOIN - 如果右表中存在数据,则获取数据.FULL OUTER JOIN - 如果存在于两个表中的任何一个表中,则获取数据.CROSS JOIN,顾名思义,确实[n X m]将一切都融入了一切.
类似于我们只是列出要加入的表(在语句的FROM子句中SELECT)的情况,使用逗号分隔它们.
需要注意的要点:
JOIN那么默认它是一个INNER JOIN.OUTER加入必须是LEFT| RIGHT| FULL你不能简单地说OUTER JOIN.OUTER关键字,只需说LEFT JOIN或RIGHT JOIN或FULL JOIN.对于那些想要以更好的方式可视化这些内容的人,请转到此链接: SQL连接的可视化解释
Mit*_*eat 342
左连接和左外连接有什么区别?
没什么.LEFT JOIN并且LEFT OUTER JOIN是等价的.
小智 65
我是PostgreSQL DBA,据我所知,外部或非外部联接之间的区别差异是一个在互联网上有相当多讨论的话题.直到今天,我从未看到过这两者之间的差异; 所以我走得更远,我试图找到它们之间的区别.最后,我阅读了有关它的整个文档,我找到了答案,
因此,如果您查看文档(至少在PostgreSQL中),您可以找到以下短语:
"的字样INNER,并OUTER在所有形式的可选的.INNER是默认; LEFT,RIGHT,和FULL暗示外连接."
换句话说,
LEFT JOIN并且LEFT OUTER JOIN是相同的
RIGHT JOIN并且RIGHT OUTER JOIN是相同的
我希望它能为那些仍在努力找到答案的人做出贡献.
fro*_*jim 42
我发现按以下顺序更容易想到联接:
直到我弄清楚这个(相对)简单的模型,JOINS总是更像是一种黑色艺术.现在他们完全有道理.
希望这有助于解决问题.
Yug*_*ryl 29
为什么LEFT/RIGHT和LEFT OUTER/RIGHT OUTER相同?让我们解释为什么这个词汇.理解LEFT和RIGHT连接是OUTER连接的特定情况,因此不能是OUTER LEFT/OUTER RIGHT以外的任何其他连接.OUTER连接也称为FULL OUTER,而不是LEFT和RIGHT连接,它们是OUTER连接的PARTIAL结果.确实:
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)
Run Code Online (Sandbox Code Playgroud)
现在很清楚为什么这些操作具有别名,并且很明显只存在3种情况:INNER,OUTER,CROSS.有两个子案例用于OUTER.词汇,教师解释这一点的方式,以及上面的一些答案,往往使它看起来有很多不同类型的连接.但它实际上非常简单.
小智 25
回答你的问题
在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
Run Code Online (Sandbox Code Playgroud)
其他等效语法
INNER JOIN => JOIN
CROSS JOIN => ,
Run Code Online (Sandbox Code Playgroud)
强烈推荐Dotnet Mob Artice:加入Sql Server

小智 19
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
Run Code Online (Sandbox Code Playgroud)希望它有所帮助.
小智 18
JOIN主要有三种类型
外:有三种类型
交叉加入:将一切都融入到一切
Uns*_*ced 15
句法糖使随意读者更明显地认为联合不是内在的.
小智 8
就这个问题而言,我还想发布 2 个“APPLY”运算符:
加入:
内连接 = 连接
外连接
左外连接 = 左连接
右外连接 = 右连接
完全外连接 = 完全连接
交叉连接
SELF-JOIN:这不完全是一种单独的连接类型。这基本上是使用上述连接之一将表连接到自身。但我觉得在上下文 JOIN 讨论中值得一提,因为您会从 SQL Developer 社区的许多人那里听到这个术语。
申请:
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 运算符非常有益,因为它们比必须在子查询中执行相同的计算提供更好的性能。它们还替代了旧版 SQL Server 中的许多分析函数。这就是为什么我相信在熟悉了 JOINS 之后,SQL 开发人员接下来应该尝试学习 APPLY 运算符。
| 归档时间: |
|
| 查看次数: |
1458692 次 |
| 最近记录: |