LEFT JOIN和LEFT OUTER JOIN之间的区别是什么?
当前回答
JOIN主要有三种类型
内部:获取两个表中存在的数据仅JOIN表示INNER JOIN外部:有三种类型LEFT OUTER--仅获取左表匹配条件中的数据RIGHT OUTER--仅获取右表匹配条件下的数据FULL OUTER—获取任何或两个表中的数据(LEFT或RIGHT或FULL)OUTER JOIN可以不写“OUTER”交叉连接:将所有内容连接到所有内容
其他回答
左连接和左外部连接之间的区别是什么?
没有什么LEFT JOIN和LEFT OUTER JOIN是等效的。
根据文档:FROM(Transact-SQL):
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
关键字OUTER标记为可选(括在方括号中)。在这种特定情况下,是否指定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
还可以看看我在另一个SO问题上留下的答案:SQL左连接与FROM行上的多个表?。
要回答您的问题,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联接的可视化解释
只有3个连接:
A) 交叉连接=笛卡尔(例如:表A、表B)B) 内部联接=联接(例如:表A联接/内部联接表B)C) 外部连接:有三种类型的外部连接左外部联接=左联接右外部联接=右联接完全外部联接=完全联接
JOIN主要有三种类型
内部:获取两个表中存在的数据仅JOIN表示INNER JOIN外部:有三种类型LEFT OUTER--仅获取左表匹配条件中的数据RIGHT OUTER--仅获取右表匹配条件下的数据FULL OUTER—获取任何或两个表中的数据(LEFT或RIGHT或FULL)OUTER JOIN可以不写“OUTER”交叉连接:将所有内容连接到所有内容
推荐文章
- 如何在SQL中选择表的最后一条记录?
- 修改列,添加默认约束
- 在存储过程中使用“SET XACT_ABORT ON”有什么好处?
- 如何检查SQL Server文本列是否为空?
- 如何创建一个SQL Server函数“连接”多行从一个子查询到一个单独的分隔字段?
- 在SQL中更新多个列
- 如何删除表中特定列的第一个字符?
- 等价的限制和偏移SQL Server?
- 如何从SQL Server中的字符串中剥离所有非字母字符?
- 为什么我不能在DELETE语句中使用别名?
- 多语句表值函数vs内联表值函数
- NOLOCK提示在SELECT语句中的作用
- SQL OVER()子句-它什么时候有用,为什么有用?
- 检查SQL Server登录是否已经存在
- 我如何使用ROW_NUMBER()?