11.联合结果集
有的时候我们需要组合两个完全不同的查询结果集,而这两个查询结果之间没有必然的联系,只是我们需要将他们显示在一个结果集中。
1.简单的结果集联合
SELECT FNumber,FName,FAge FROM T_Employee WHERE FAge<30 UNION SELECT FIdCardNumber,FName,FAge FROM T_TempEmployee WHERE FAge>40 UNION SELECT FIdCardNumber,FName,FAge FROM T_TempEmployee WHERE FAge<30
2.联合结果集的原则
一:每个结果集必须有相同的列数,两个不同列数的结果集是不能联合在一起的。
二:每个结果集的列必须类型相容,也就是说结果集的每个对应列的数据类型必须相同或者能够转换为同一种数据类型。
3.UNION ALL
这时因为默认情况下,UNION运算符合并了两个查询结果集,其中完全重复的数据行被合并为了一条。如果需要在联合结果集中返回所有的记录而不管它们是否唯一,则需要在
UNION运算符后使用ALL操作符:
SELECT FName,FAge FROM T_Employee UNION ALL SELECT FName,FAge FROM T_TempEmployee
联合结果集在制作报表的时候经常被用到,使用联合结果集我们可以将没有直接关系的数据显示到同一张报表中。使用UNION运算符,只要被联合的结果集符合联合结果集的原
则:
4.员工年龄报表
SELECT '正式员工最高年龄',MAX(FAge) FROM T_Employee UNION SELECT '正式员工最低年龄',MIN(FAge) FROM T_Employee UNION SELECT '临时工最高年龄',MAX(FAge) FROM T_TempEmployee UNION SELECT '临时工最低年龄',MIN(FAge) FROM T_TempEmployee
执行结果:
5.员工工资报表
SELECT FNumber,FSalary FROM T_Employee UNION SELECT '工资合计',SUM(FSalary) FROM T_Employee
执行结果: