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 后面排序的字段名称是第一个数据集的字段名或者别名

 

posted @ 2016-07-26 17:06  那就让我这样吧  阅读(907)  评论(0编辑  收藏  举报