一、两个数据表进行连接合并的七种情况
使用韦恩图分析两个集合的合并(即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的关系,销售记录里面包含了多个产品。且每个产品编号,在产品信息表中肯定是存在。同时每个产品都有销售记录。这样的情况下,左外部连接、右外部连接,实际的结果是一样的。