一、两个数据表进行连接合并的七种情况
使用韦恩图分析两个集合的合并(即Power Query中对表的合并查询),可得出有7种情况。(动手数一下,数不出第8种情况的了)
1、左外部链接:匹配A、B两个数据集,仅返回A中存在的数据。
2、右外部连接:匹配A、B两个数据集,仅返回B中存在的数据。
3、完全外部连接:匹配A、B两个数据集,仅返回全部的数据。
4、内部连接:匹配A、B两个数据集,仅返回A、B均存在的数据。
5、左反连接:匹配A、B两个数据集,仅返回A中存在,同时在B中不存在的数据集。
6、右反连接:匹配A、B两个数据集,仅返回B中存在,同时在A中不存在的数据集。
7、全反连接:匹配A、B两个数据集,仅返回只在A或只在B中存在的数据集。
二、七种连接类型的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中存在的数据集,等于没有匹配出任何内容)
例子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的关系,每个人在每个表最多只会出现一次。部分连接的结果如下。
左外部连接:
右外部连接:
完全外部连接:
例子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的关系,销售记录里面包含了多个产品。且每个产品编号,在产品信息表中肯定是存在。同时每个产品都有销售记录。这样的情况下,左外部连接、右外部连接,实际的结果是一样的。