Power Query合并查询的各种联结种类,对比SQL中各种join连接

时间:2024-03-27 08:41:41

一、两个数据表进行连接合并的七种情况

使用韦恩图分析两个集合的合并(即Power Query中对表的合并查询),可得出有7种情况。(动手数一下,数不出第8种情况的了)

1、左外部链接:匹配A、B两个数据集,仅返回A中存在的数据。

Power Query合并查询的各种联结种类,对比SQL中各种join连接

2、右外部连接:匹配A、B两个数据集,仅返回B中存在的数据。

Power Query合并查询的各种联结种类,对比SQL中各种join连接

3、完全外部连接:匹配A、B两个数据集,仅返回全部的数据。

Power Query合并查询的各种联结种类,对比SQL中各种join连接

4、内部连接:匹配A、B两个数据集,仅返回A、B均存在的数据。

Power Query合并查询的各种联结种类,对比SQL中各种join连接

5、左反连接:匹配A、B两个数据集,仅返回A中存在,同时在B中不存在的数据集。

Power Query合并查询的各种联结种类,对比SQL中各种join连接

6、右反连接:匹配A、B两个数据集,仅返回B中存在,同时在A中不存在的数据集。

Power Query合并查询的各种联结种类,对比SQL中各种join连接

7、全反连接:匹配A、B两个数据集,仅返回只在A或只在B中存在的数据集。

Power Query合并查询的各种联结种类,对比SQL中各种join连接

二、七种连接类型的SQL实现

左外部连接:select * from Table1 left join Table2 on Table1.key = Table2.key

右外部连接:select * from Table1 right join Table2 on Table1.key = Table2.key

完全外部连接:select * from Table1 full outer join Table2 on Table1.key = Table2.key

内部连接:select * from Table1 inner join Table2 on Table1.key = Table2.key

左反连接:select * from Table1 left join Table2 on Table1.key = Table2.key where Table2.key is null

右反连接:select *from Table1 right join Table2 on Table1.key = Table2.key where Table1.key is null

全反连接:select * from Table1 full outer join Table2 on Table1.key = Table2.key where Table1.key is null or Table2.key is null

三、七种连接类型的Power Query的合并查询

Power Query的合并查询中,只提供了六种连接类型。(可能认为全反连接,匹配A、B两个数据集,仅返回只在A或只在B中存在的数据集,等于没有匹配出任何内容)

Power Query合并查询的各种联结种类,对比SQL中各种join连接

例子1:

会议的邀请记录,和参会记录。邀请了A、B、C、D、E五人参加。最终参会时是D、E、F、G四人(没有邀请也能参加)。

邀请名单

邀请时间

A

2020/2/2

B

2020/2/3

C

2020/2/4

D

2020/2/5

E

2020/2/6

参加名单

参加时间

D

2020/3/2

E

2020/3/2

F

2020/3/3

G

2020/3/3

两个表为1对1的关系,每个人在每个表最多只会出现一次。部分连接的结果如下。

左外部连接:

Power Query合并查询的各种联结种类,对比SQL中各种join连接

右外部连接:

Power Query合并查询的各种联结种类,对比SQL中各种join连接

完全外部连接:

Power Query合并查询的各种联结种类,对比SQL中各种join连接

例子2:销售记录表、产品信息表

销售单号

产品编号

销量

销售额

S001

A1

1

200

S001

A2

1

100

S002

A2

1

100

S002

A3

1

50

S003

A3

1

50

产品编号

产品名称

单价

A1

儿童车

200

A2

奶瓶

100

A3

座椅

50

两个表为N对1的关系,销售记录里面包含了多个产品。且每个产品编号,在产品信息表中肯定是存在。同时每个产品都有销售记录。这样的情况下,左外部连接、右外部连接,实际的结果是一样的。

Power Query合并查询的各种联结种类,对比SQL中各种join连接