sql两个查询结果合并_SQL可以不懂,但表间数据匹配(合并查询)这6种联接类型必须要理解!...

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

16edd16cbe087371f7ad28a4cd8c5f99.png

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

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

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

小勤:这真是太好了。

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

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

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

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

46b429f9cca0b977d5a3ffd330f4ec74.png

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

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

ec3c6f826c1acdb7e4c146b18eae8180.png 533c7568947f8b3148f5cd26ce7d2253.png

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

15465c91ab3e22538edbbb94f7fe8575.png cbb967f42dfa2255c652e7fc1c09c345.png

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

950092abb4ffc3e5d8ea9d7c1ec6af03.png

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

c80477486430a0302ad6fe81c2eb061f.png d25848c692e10a2bdb061fc6ef064e2b.png

Step-05:生成左外部查询

150258e3927bbd5be6dfb0eb4329d5ca.gif

Step-06:生成右外部查询

48c83b3991d9e1b20152aa2f14845b02.gif

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

0d941454fa59f1af391ed148179796f2.gif

Step-08:生成内部查询

81144c6c72831706e90e8dc295d45ea2.gif

Step-09:生成左反查询

6f15356a010c497f45a5604694b635f5.gif

Step-10:生成右反查询

313f354769627397b3a8f6ef156664c6.gif

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

  • 左外部:只要订单表(左表)里有的数据,结果表里都会有,但有些因为明细表(右表)里没有,所以匹配过来后会成为null(空值)

90161f29d4483ef91cd3fdcc0918b202.png
  • 右外部:和左外部相反,即明细表(右表)里有的数据,结果表里都会有,但因为订单表(左表)里有部分数据没有,所以合并后用null值表示。

0bda0c996e79a68e45730a7e702432e2.png
  • 完全外部:不管哪个表里的数据,全都进结果表,对于双方都有一些对方没有的,合并后显示为null值。

d85dfffb8e4bd962ca3b6fb8581a8c64.png
  • 内部:跟完全外部相反,只有两个表都有的数据,才进结果表。

d36957671dd56cd3feb28ef66050945f.png
  • 左反:只有订单表(左表)有而明细表(右表)没有的数据,才进结果表。

    这种用法经常用于检查如哪些订单缺了明细表等。

51b4c71d6a1a94fb1e68008b1abe0329.png

  • 右反:和左反相反,只有明细表(右表)有而订单表(左表)没有的数据,才进结果表。

3d70b42120338745a66004ddd2e62e3f.png

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

e0d4e29691b74e20514c12c4e4b6de04.png

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

0f45588e86fa66f6406959db716db0c1.png

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

Power新书榜第1 | 最适合入门打基础

当当京东超低折扣进行中

最通俗易懂Power系列视频 -

购书领60元视频券 or 直购视频送签名书

d0bb5d4fd77ddba8b48d26919ed2da77.png

点“阅读原文”看视频

更易理解,学得更快

本文配套材料下载

(按文章发布日期确定对应文件)

https://share.weiyun.com/5YKFr4Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值