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


当前回答

回答您的问题

在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

其他回答

只有3个连接:

A) 交叉连接=笛卡尔(例如:表A、表B)B) 内部联接=联接(例如:表A联接/内部联接表B)C) 外部连接:有三种类型的外部连接左外部联接=左联接右外部联接=右联接完全外部联接=完全联接

要回答您的问题,LEFT JOIN之间没有区别和LEFT OUTER JOIN,它们和上面说的完全一样。。。

在顶层,主要有3种连接类型:

内部外部十字


INNER JOIN-如果两个表中都存在,则获取数据。OUTER JOIN有三种类型:LEFT OUTER JOIN-获取左表中存在的数据。RIGHT OUTER JOIN-如果右表中存在,则获取数据。FULL OUTER JOIN-如果两个表中的任何一个表中存在,则获取数据。顾名思义,CROSS JOIN是将所有事物连接到所有事物的[n X m]。类似于我们简单列出要连接的表(在SELECT语句的FROM子句中)的场景,使用逗号分隔它们。


注意事项:

如果您只提到JOIN,那么默认情况下它是INNER JOIN。OUTER联接必须是LEFT|RIGHT|FULL,不能简单地说OUTER联接。您可以删除OUTER关键字,只需说LEFT JOIN或RIGHT JOIN或FULL JOIN。


对于那些希望以更好的方式可视化这些内容的人,请访问以下链接:SQL联接的可视化解释

我发现按以下顺序更容易想到联接:

CROSS JOIN-两个表的笛卡尔乘积。所有连接从此处开始INNER JOIN-添加了过滤器的CROSS JOIN。OUTER JOIN-缺少元素的INNER JOIN(来自LEFT或RIGHT表)随后添加。

在我找到这个(相对)简单的模型之前,JOIN总是有点像一门黑色艺术。现在它们很有意义。

希望这能帮助你,而不是让你困惑。

我是一名PostgreSQL DBA,据我所知,外部连接和非外部连接之间的区别是一个在互联网上有大量讨论的话题。直到今天,我从未看到这两者之间的区别;所以我更进一步,我试图找出它们之间的区别。最后,我阅读了关于它的全部文档,我找到了答案,

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

INNER和OUTER在所有形式中都是可选的。INNER是默认值;LEFT、RIGHT和FULL表示外部连接

换句话说,

左联接和左外部联接相同

右联接和右外部联接相同

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

语法糖,让不经意的读者更清楚地看到,连接不是内在的。