SQL Server中的左加入与左外部加入
LEFT JOIN
和LEFT OUTER JOIN
什么区别?
根据文档:FROM(Transact-SQL):
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
关键字OUTER
被标记为可选项(用方括号括起来),这意味着在这种情况下是否指定它并没有区别。 请注意,虽然连接子句的其他元素也标记为可选,但将它们排除在外当然会有所作为。
例如, 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
另外看看我在这个其他SO问题上留下的答案:SQL left join与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]
加入到所有事物中。
类似于我们仅仅列出要加入的表(在SELECT
语句的FROM
子句中),使用逗号分隔它们的情况。
需要注意的是:
JOIN
那么默认情况下它是一个INNER JOIN
。 OUTER
连接必须是LEFT
| RIGHT
| FULL
你不能简单地说OUTER JOIN
。 OUTER
关键字,只需说出LEFT JOIN
或RIGHT JOIN
或FULL JOIN
。 对于那些想要以更好的方式可视化这些内容的人,请转到此链接:SQL连接的可视化解释
左连接和左外连接有什么区别?
没什么 。 LEFT JOIN
和LEFT OUTER JOIN
是等价的。
上一篇: LEFT JOIN vs. LEFT OUTER JOIN in SQL Server
下一篇: Why are parameters slower than literal values in a where clause?