mysql - CROSS JOIN和INNER JOIN、LEFT JOIN、RIGHT JOIN、OUTER JOIN的区别
问题描述
据我了解,它CROSS JOIN
本质上是一个产生笛卡尔积的叉积。INNER JOIN
, RIGHT JOIN
, LEFT JOIN
,OUTER JOIN
笛卡尔积除了它们不产生重复并且对它们应用了某些条件之外,是否也是?
谢谢!
注意:我不相信这是重复的. 该链接没有详细说明与我正在寻找的细节的区别。由读者来挖掘和推断差异。我在下面提供的答案有望为读者节省一些时间。
解决方案
JOIN 操作可以指定为 CARTESIAN PRODUCT 操作后跟 SELECT 操作。
...
JOIN 的结果是一个关系 Q,其中 n + m 个属性 Q(A1, A2, ... , An, B1, B2, ... , Bm) 按顺序排列;Q 对于每个元组组合都有一个元组——一个来自 R,一个来自 S——只要组合满足连接条件。这是笛卡尔积和联接之间的主要区别。在 JOIN 中,只有满足连接条件的元组组合出现在结果中,而在 CARTESIAN PRODUCT 中,所有元组组合都包含在结果中。连接条件是在两个关系 R 和 S 的属性上指定的,并针对每个元组组合进行评估。连接条件评估为 TRUE 的每个元组组合作为单个组合元组包含在结果关系 Q 中。
资料来源:数据库系统基础(第 7 版),Elmasri
推荐阅读
- c++ - config_stream.is_open() c++ 总是返回 false
- python - 在 Raspberrypi (Systemd) 中重新启动时使用 scapy 嗅探
- java - 可以暂停/恢复并执行用户的可运行操作的通用线程
- unity3d - 将着色器应用于材质将对象变为粉红色?
- c# - 请在 Unity 中解释 transform.rotate
- android - SurfaceView Canvas 在 4K Android TV 上以 1080p 渲染
- python - 在 Python PIL 中保存动画 GIF 图像会导致质量损失?
- python - 数据框列状态
- django - 没有直接外部字段的其他模型上的 Django api 过滤器搜索
- java - 卡夫卡消费者没有收到旧消息