LEFT JOIN和LEFT OUTER JOIN之间的区别是什么?
当前回答
只有3个连接:
A) 交叉连接=笛卡尔(例如:表A、表B)B) 内部联接=联接(例如:表A联接/内部联接表B)C) 外部连接:有三种类型的外部连接左外部联接=左联接右外部联接=右联接完全外部联接=完全联接
其他回答
左连接和左外部连接是相同的。前者是后者的简写。右联接和右外部联接关系也是如此。这次示威将说明平等。通过SQLFiddle提供了每个查询的工作示例。该工具将允许手动操作查询。
鉴于
左连接和左外部连接
后果
右连接和右外部连接
后果
语法糖,让不经意的读者更清楚地看到,连接不是内在的。
我是一名PostgreSQL DBA,据我所知,外部连接和非外部连接之间的区别是一个在互联网上有大量讨论的话题。直到今天,我从未看到这两者之间的区别;所以我更进一步,我试图找出它们之间的区别。最后,我阅读了关于它的全部文档,我找到了答案,
因此,如果您查看文档(至少在PostgreSQL中),您可以找到以下短语:
INNER和OUTER在所有形式中都是可选的。INNER是默认值;LEFT、RIGHT和FULL表示外部连接
换句话说,
左联接和左外部联接相同
右联接和右外部联接相同
我希望它能为那些仍在努力寻找答案的人做出贡献。
左连接和左外部连接之间的区别是什么?
没有什么LEFT JOIN和LEFT OUTER JOIN是等效的。
为什么左/右和左外/右外相同?让我们解释一下为什么使用这个词汇。请理解,LEFT和RIGHT联接是OUTER联接的特定情况,因此不能是OUTER LEFT/OUTER RIGHT以外的任何其他联接。OUTER联接也称为FULL OUTER,与作为OUTER联接的部分结果的LEFT和RIGHT联接不同。的确:
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。外部有两个子情况。词汇、老师解释这一点的方式,以及上面的一些答案,通常会让人觉得有很多不同类型的连接。但其实很简单。
推荐文章
- 如何为查询返回的每一行执行存储过程一次?
- 如果没有使用EXISTS引入子查询,则只能在选择列表中指定一个表达式
- SQL Server -事务回滚错误?
- 查询以列出数据库中每个表中的记录数量
- 在WHERE子句中引用列别名
- 存储图像在SQL Server?
- 列出在SQL Server上运行的查询
- 恢复未保存的SQL查询脚本
- 存储值为> 24:00:00的.Net Timespan的正确SQL类型是什么?
- 字符串或二进制数据将被截断
- 对象'xxxxxxx',数据库'zzzzzzz',模式'dbo'上的EXECUTE权限被拒绝
- 向临时表中插入数据
- 无法绑定多部分标识符
- 导入CSV文件到SQL Server中
- 在SQL server查询中将NULL替换为0