首页 > 解决方案 > SQL A不是左连接B,只是A吗?

问题描述

因此,我查看了一些图表来了解连接之间的区别,然后我看到了这张图片:

在此处输入图像描述

也许问题在于用维恩图表示这一点。但是看看第一个连接,左上角,那基本上不是 A 吗?B在那里有什么不同?

编辑:https ://blog.jooq.org/2016/07/05/say-no-to-venn-diagrams-when-explaining-joins/

这个网站解释得很好

标签: sqljoinleft-join

解决方案


不,因为它是一个连接,它可以为 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 left join 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

简而言之:

  • A 中的所有行都显示在左连接中:甚至3 Kelly显示。
  • 当 B 中没有匹配的行时,B 中的列将显示为空:行在最后两列中3 Kellynull
  • A 中的行在 B 中有多个匹配项时可能会出现多次:行2 Malcolm出现 3 次。

推荐阅读