CROSS JOIN和INNER JOIN,LEFT JOIN,RIGHT JOIN,OUTER JOIN之间的区别[重复]

Posted

技术标签:

【中文标题】CROSS JOIN和INNER JOIN,LEFT JOIN,RIGHT JOIN,OUTER JOIN之间的区别[重复]【英文标题】:Difference between CROSS JOIN and INNER JOIN, LEFT JOIN, RIGHT JOIN, OUTER JOIN [duplicate] 【发布时间】:2019-09-03 23:48:36 【问题描述】:

据我了解,CROSS JOIN 本质上是一个产生笛卡尔积的叉积。 INNER JOINRIGHT JOINLEFT JOINOUTER JOIN 是否也是笛卡尔积,除了它们不产生重复并对其应用了某些条件?

谢谢!

注意:我不认为这是重复的。该链接没有详细说明与我正在寻找的细节的区别。由读者来挖掘和推断差异。我在下面提供的答案有望为读者节省一些时间。

【问题讨论】:

【参考方案1】:

JOIN 操作可以指定为 CARTESIAN PRODUCT 操作 然后是 SELECT 操作。

...

JOIN 的结果是一个具有 n + m 个属性 Q(A1, A2, ... , An, B1, B2, ... , Bm) 按此顺序; Q 每个都有一个元组 元组的组合——一个来自 R,一个来自 S——只要 组合满足连接条件。这是主要区别 笛卡尔积和联接之间。在 JOIN 中,只有 满足连接条件的元组出现在结果中,而在 笛卡尔积 元组的所有组合都包含在 结果。连接条件是在两个属性上指定的 关系 R 和 S 并针对每个元组组合进行评估。 连接条件评估为 TRUE 的每个元组组合 包含在结果关系 Q 中作为单个组合元组。

来源:数据库系统基础(第 7 版),Elmasri

【讨论】:

以上是关于CROSS JOIN和INNER JOIN,LEFT JOIN,RIGHT JOIN,OUTER JOIN之间的区别[重复]的主要内容,如果未能解决你的问题,请参考以下文章

SQL中inner join,outer join和cross join的区别

SQL中inner join,outer join和cross join的区别

SQL中inner join,outer join和cross join的区别

SQL中inner join,outer join和cross join的区别

SQL中inner joinouter join和cross join的区别

SQL中inner joinouter join和cross join的区别