DW_SQL集合运算
关于UNION
1、union
UNION 等集合运算符通常都会除去重复的记录.
UNION 的去重相当于set. 不仅会去掉两个结果集重复的,还会去掉一个结果集中重复的行。
2、union all
在union的结果中保留重复行。
3、union可以兼容不同的类型
4、两个表做差集
利用谓词 not in
差集,补集与表的减法
A-B = A-A∩B
!!!MySQL 8.0 还不⽀持 表的减法运算符 EXCEPT,但是可以用NOT IN 实现类似的功能(在A不在B中)。
连接
结合 GROUP BY 子句使用内连结
结合 GROUP BY 子句使用内连结, 需要根据分组列位于哪个表区别对待.
最简单的情形, 是在内连结之前就使用 GROUP BY 子句.
但是如果分组列和被聚合的列不在同一张表, 且二者都未被用于连结两张表, 则只能先连结, 再聚合.
外连结(OUTER JOIN)
内连结会丢弃两张表中不满足 ON 条件的行,和内连结相对的就是外连结. 外连结会根据外连结的种类有选择地保留无法匹配到的行.
按照保留的行位于哪张表,外连结有三种形式: 左连结, 右连结和全外连结.
左连结会保存左表中无法按照 ON 子句匹配到的行, 此时对应右表的行均为缺失值; 右连结则会保存右表中无法按照 ON 子句匹配到的行, 此时对应左表的行均为缺失值; 而全外连结则会同时保存两个表中无法按照 ON子句匹配到的行, 相应的另一张表中的行用缺失值填充.
三种外连结的对应语法分别为:
FROM <TABLE1> LEFT OUTER JOIN <TABLE2> ON <CONDITIONS>
FROM <TANLE1> RIGHT OUTER JOIN <TABLE2> ON <CONDITIONS>
FROM <TABLE1> FULL OUTER JOIN <TABLE2> ON <CONDITIONS>