所以我看了几个图表来理解连接之间的区别,然后我看到了这样的图像:

也许问题在于用Venn图来表示这一点。但是看看第一个连接,左上角,这不是只是A吗?B在那里有什么区别?
编辑:https://blog.jooq.org/2016/07/05/say-no-to-venn-diagrams-when-explaining-joins/
这个网站解释得很好
发布于 2018-12-27 18:27:08
不,因为它是一个联接,它可以为A中的行生成大于1的基数,也就是说,如果B中有多个匹配行,那么A中的一行将多次显示。
示例:
表A:
id name
-- -------
1 Alice
2 Malcolm
3 Kelly表B:
id_a preferred_food
---- --------------
1 Pizza
2 Burger
2 Steak
2 Menestroni然后"A左加入B“就会给你:
id name id_a preferred_food
-- ------- ---- --------------
1 Alice 1 Pizza
2 Malcolm 2 Burger
2 Malcolm 2 Steak
2 Malcolm 2 Menestroni
3 Kelly null null简言之:
3 Kelly也会出现。3 Kelly在最后两列中有null。2 Malcolm显示三次。发布于 2018-12-27 18:42:23
您的图表并不完全是Venn图。
两个圆圈的交集用表A和表B的数据表示已连接的行(根据您的联接条件)。
左新月(标记为" A ")表示表A中没有相应行的行;右新月(标记为"B")表示表B中没有对应行的行。
左上角图应该显示的是,左联接提供了表A和表B中的数据,这些数据可以根据连接条件进行连接,以及表A中没有相应匹配的所有行。
发布于 2018-12-27 18:20:38
通过联接,您可以从两个表中获得字段,而不仅仅是A。如果表之间的关系不是1-1,则返回的记录数也会乘以。
基本上,所有这些连接之间唯一的区别是A中的记录与B中的任何记录不匹配时的行为,反之亦然。你的图表只显示了这种行为。
图顶部let =保存来自A的所有记录,无论它们是否与B中的任何内容匹配(+未表示的内容:当它们匹配时,从B获取数据)。
https://stackoverflow.com/questions/53949197
复制相似问题