LEFT JOIN
和之间有什么区别LEFT OUTER JOIN
?
根据文档:FROM(Transact-SQL):
::= [ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ ] ] JOIN
关键字OUTER
被标记为可选(括在方括号中),在这种情况下,这意味着无论您是否指定它都没有区别.请注意,虽然join子句的其他元素也标记为可选,但将它们排除在外当然会产生影响.
例如,OUTER
子句的整个类型部分是可选的,在这种情况下,默认值是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之间没有区别,它们完全相同 ...
内
外
交叉
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连接的可视化解释
左连接和左外连接有什么区别?
没什么.LEFT JOIN
并且LEFT OUTER JOIN
是等价的.
我是PostgreSQL DBA,据我所知,外部或非外部联接之间的区别差异是一个在互联网上有相当多讨论的话题.直到今天,我从未看到过这两者之间的差异; 所以我走得更远,我试图找到它们之间的区别.最后,我阅读了有关它的整个文档,我找到了答案,
因此,如果您查看文档(至少在PostgreSQL中),您可以找到以下短语:
"的字样INNER
,并OUTER
在所有形式的可选的.INNER
是默认; LEFT
,RIGHT
,和FULL
暗示外连接."
换句话说,
LEFT JOIN
并且LEFT OUTER JOIN
是相同的
RIGHT JOIN
并且RIGHT OUTER JOIN
是相同的
我希望它能为那些仍在努力找到答案的人做出贡献.
Left Join
并且Left Outer Join
是同一个.前者是后者的简写.同样可以对说Right Join
和Right Outer Join
关系.示威将说明平等.每个查询的工作示例都是通过SQL Fiddle提供的.此工具将允许动手操作查询.
特定
左连接和左外连接
结果
正确的加入和正确的外部加入
结果
我发现按以下顺序更容易想到联接:
CROSS JOIN - 两张桌子的笛卡尔积.ALL连接从这里开始
INNER JOIN - 添加了过滤器的CROSS JOIN.
OUTER JOIN - 随后添加缺少元素(来自LEFT或RIGHT表)的INNER JOIN.
直到我弄清楚这个(相对)简单的模型,JOINS总是更像是一种黑色艺术.现在他们完全有道理.
希望这有助于解决问题.
为什么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)
现在很清楚为什么这些操作具有别名,并且很明显只存在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
A)交叉连接=笛卡尔(例如:表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
希望它有所帮助.
JOIN主要有三种类型
内部:获取两个表中存在的数据
只有JOIN表示INNER JOIN
外:有三种类型
LEFT OUTER - - 仅提取左表和匹配条件中的数据
RIGHT OUTER - - 仅在右表和匹配条件中提取数据
FULL OUTER - - 获取任何或两个表中的数据
(左或右或全)外部联接可以写成"外部"
交叉加入:将一切都融入到一切
句法糖使随意读者更明显地认为联合不是内在的.