SQL A不是左连接B,只是A吗?

新手上路,请多包涵

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

在此处输入图像描述

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

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

这个网站解释得很好

原文由 user4307777 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 618
2 个回答

不,因为它是一个连接,它可以为 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 Kelly null
  • 当 A 中的行在 B 中有多个匹配项时,它们可能会出现多次:行 2 Malcolm 出现 3 次。

原文由 The Impaler 发布,翻译遵循 CC BY-SA 4.0 许可协议

A LEFT JOIN B MEANS A + (common Entries OF A WHICH ARE THE IN B) left join 宁愿在这种情况下左连接的表有更多记录的地方执行 A 并且这些记录可能会引用 B 中的一些其他列常见的情况。因此,如果需要 A 和 B 的某些共同值,结果 A 左连接 B 不仅意味着 A,而且还添加 B 的列。

原文由 Himanshu 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进