rollup 就相当于先按照 A, B 进行聚合, 后按照 A进行聚合, 最后对整个数据集进行聚合, 在按照 A 聚合时, B 列值为 null, 聚合整个数据集的时候,
除了聚合列, 其它列值都为 null。结果集中有三种数据形式: A B C, A null C, null null C
结果集中有四种数据形式: A B C, A null C, null null C, null B C
连接类型 | 类型字段 | 解释 |
交叉连接
|
cross
|
- 解释
-
交叉连接就是笛卡尔积, 就是两个表中所有的数据两两结对
交叉连接是一个非常重的操作, 在生产中, 尽量不要将两个大数据集交叉连接, 如果一定要交叉连接, 也需要在交叉连接后进行过滤, 优化器会进行优化
SQL 语句-
Dataset 操作-
|
内连接
|
inner
|
- 解释
-
内连接就是按照条件找到两个数据集关联的数据, 并且在生成的结果集中只存在能关联到的数据
SQL 语句-
Dataset 操作-
|
全外连接
|
outer , full , fullouter
|
- 解释
-
内连接和外连接的最大区别, 就是内连接的结果集中只有可以连接上的数据, 而外连接可以包含没有连接上的数据,
根据情况的不同, 外连接又可以分为很多种, 比如所有的没连接上的数据都放入结果集, 就叫做全外连接
SQL 语句-
Dataset 操作-
|
左外连接
|
leftouter , left
|
- 解释
-
左外连接是全外连接的一个子集, 全外连接中包含左右两边数据集没有连接上的数据, 而左外连接只包含左边数据集中没有连接上的数据
SQL 语句-
Dataset 操作-
|
LeftAnti
|
leftanti
|
- 解释
-
LeftAnti 是一种特殊的连接形式, 和左外连接类似, 但是其结果集中没有右侧的数据, 只包含左边集合中没连接上的数据
SQL 语句-
Dataset 操作-
|
LeftSemi
|
leftsemi
|
- 解释
-
和 LeftAnti 恰好相反, LeftSemi 的结果集也没有右侧集合的数据, 但是只包含左侧集合中连接上的数据
SQL 语句-
Dataset 操作-
|
右外连接
|
rightouter , right
|
- 解释
-
右外连接和左外连接刚好相反, 左外是包含左侧未连接的数据, 和两个数据集中连接上的数据,
而右外是包含右侧未连接的数据, 和两个数据集中连接上的数据
SQL 语句-
Dataset 操作-
|