sqlserver 理解数据集
数据集分四类:
1.A∩B,既是所求数据集既在A中,又在B中
2.A∪B,既所求数据在数据集A中,或在数据集B中
3.A-B,既所求数据在数据集A中,不在数据集B中
4.B-A,既所求数据在数据集B中,不在数据集A中
和数学一样
数据集:参与数据集运算的两个数据集可以来自任何返回数据集的表达式:
一张表,一张表的子集,多张表,临时表变量,虚拟列,甚至一个值
并不是所有的数据集都可以直接做运算
就像 1个人 + 1只老虎 不能等于2 一样,所以数据集运算需满足三个条件:
1 两个数据集之间必须具有相同数量的列
2 两个数据集之间列出现的次序必须一致
3 两个数据集之间每一个对应的列的数据类型必须匹配
数据集运算:
1 AUB:使用Union实现
当两个数据集中相同的行时,保留一个
使用 Union all 实现
与Union不同的是:当遇到两个数据集中重复的行的时候,全部保留,只做简单的并的操作
2 AnB 使用INTERSECT实现
例如:
SELECT * FROM A1
INTERSECT
SELECT * FROM A2
3 A-B 使用Except实现
例如:
SELECT * FROM A1
EXCEPT
SELECT * FROM A2
3 数据列的别名和排序:
如果没有为数据列指定别名,则数据列的名称按照出现在第一个集合对应的列名算
如果想自定义列名,则需要为数据集运算中出现的第一位的数据集指定别名
SELECT name1 AS a ,age FROM A1
EXCEPT
SELECT name2,age FROM A2
4 对运算后的结果集进行排序
只需要在运算的最后加上order by子句,但注意:
1 order by是对整个运算后的结果排序,并不是对单个数据集
2 order by 后面排序的字段名称是第一个数据集的字段名或者别名