前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL可以不懂,但表间数据匹配(合并查询)这6种联接类型必须要理解!

SQL可以不懂,但表间数据匹配(合并查询)这6种联接类型必须要理解!

作者头像
大海Power
发布2021-08-31 10:19:18
1.4K0
发布2021-08-31 10:19:18
举报
文章被收录于专栏:用户8950297的专栏

小勤:合并查询里的联接种类怎么这么多啊!左外部、右外部、完全外部、内部、左反、右反6种!分别都是什么意思?

大海:其实括号里就是它们的意思了。只是因为没有具体数据,所以还是不太好理解而已,另外,如果了解过SQL(数据库操作语言)的话,就很容易理解这几种关系。

小勤:当然是不懂SQL啦,如果懂就不用问啦。看概念和文字真的很难理解,而且,即使可能理解了,感觉上还是心里没底的。

大海:现在有了Power Query,对于很多普通用户来说,不懂SQL也问题不大。另外,因为没有数据带来的感观认识,的确会出现即使感觉上理解了,也很难达到活用的现象,所以我专门准备了一套简单的数据来演示给你看,回头你也分别操作一下,然后对比一下结果,这样就感觉很明显了。

小勤:这真是太好了。

大海:我这里有一个订单表和一个订单明细表。我们先看一下这两个表的情况,其中:

  • 订单表里有一些数据是明细表里没有的
  • 明细表里也有些数据是订单表里没有的

另外,我们后面操作的时候基于订单表去创建合并查询,然后选明细表,所以这里将订单表叫左表,将明细表叫右表。如下图所示:

接下来,我们将两个表的数据都放到PQ里,因为我们只需要在PQ里观察各种联接类型的结果,所以只需要以“仅创建连接”的方式获取数据即可。

Step-01:获取订单表并修改名称

Step-02:获取订单明细表并修改名称

Step-03:数据上载时选择仅创建连接(如果想创建表也无所谓)

Step-04:为了结果比较更明显一点,我们把两个表的其他列都删掉,只剩订单ID列好了。

Step-05:生成左外部查询

Step-06:生成右外部查询

Step-07:生成完全外部查询

Step-08:生成内部查询

Step-09:生成左反查询

Step-10:生成右反查询

接下来我们开始各种联接类型的结果比较:

  • 左外部:只要订单表(左表)里有的数据,结果表里都会有,但有些因为明细表(右表)里没有,所以匹配过来后会成为null(空值)
  • 右外部:和左外部相反,即明细表(右表)里有的数据,结果表里都会有,但因为订单表(左表)里有部分数据没有,所以合并后用null值表示。
  • 完全外部:不管哪个表里的数据,全都进结果表,对于双方都有一些对方没有的,合并后显示为null值。
  • 内部:跟完全外部相反,只有两个表都有的数据,才进结果表。
  • 左反:只有订单表(左表)有而明细表(右表)没有的数据,才进结果表。 这种用法经常用于检查如哪些订单缺了明细表等。
  • 右反:和左反相反,只有明细表(右表)有而订单表(左表)没有的数据,才进结果表。

最后总结如下表所示(我——左表,你——右表):

说明:其中函数参数是进行合并操作是生成的代码参数,如下图所示:

如果在Power Query的操作中可以选择相应的联接类型,这些参数会自动生成,对于版本比较早的用户,如果操作过程中不能选择需要的联接类型,可在合并后生成的代码中直接加入或修改相应的参数来达到相应的效果。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Excel到PowerBI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档