sql - SQL A不是左连接B,只是A吗?
问题描述
因此,我查看了一些图表来了解连接之间的区别,然后我看到了这张图片:
也许问题在于用维恩图表示这一点。但是看看第一个连接,左上角,那基本上不是 A 吗?B在那里有什么不同?
编辑:https ://blog.jooq.org/2016/07/05/say-no-to-venn-diagrams-when-explaining-joins/
这个网站解释得很好
解决方案
不,因为它是一个连接,它可以为 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 次。
推荐阅读
- javascript - 如何在流程的不同阶段将数据临时存储在 redux 或 redux saga 中
- go - 如何在 GoLang 测试用例中发送 google.protobuf.Struct 数据?
- c++ - 我可以将 c++ sanitizer 仅应用于我的程序部分而不应用于第三方库吗
- html - 在 HTML/CSS 中重新创建此登录页面时遇到问题
- d3.js - 将 d3-voronoi 移植到 d3-delunay
- php - 配置 .httaccess 以使 wordpress 被多个域访问,而无需在 nginx 和 apache 服务器上重定向
- python - 如何解决:将变量分配给两个列表时出现“Int object not iterable”?
- javascript - 如何使“span id”与 JavaScript 一起使用?
- vue.js - 在 vuepress 中,我如何以及在哪里设置 webpack devServer?
- python-3.8 - Python3.8中的文本进度条