根据文档: FROM(Transact-SQL) :
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
关键字OUTER
被标记为可选(括在方括号中),在这种情况下,这意味着无论您是否指定它都没有区别。请注意,虽然 join 子句的其他元素也标记为可选,但将它们排除在外当然会产生影响。
例如, 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
另外看看我在另一个问题上留下的答案: 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]
将所有东西都加入到一切中。
类似于我们只是列出要加入的表(在SELECT
语句的FROM
子句中)的方案,使用逗号分隔它们。
需要注意的要点:
JOIN
那么默认情况下它是INNER JOIN
。 OUTER
连接必须为LEFT
| RIGHT
| FULL
你不能简单地说OUTER JOIN
。 OUTER
关键字,只需说LEFT JOIN
或RIGHT JOIN
或FULL JOIN
。 对于那些想要以更好的方式可视化这些内容的人,请转到此链接: SQL 连接的可视化解释
左连接和左外连接有什么区别?
没什么 。 LEFT JOIN
和LEFT OUTER JOIN
是等效的。