联合结果集(Union)
union和union区别:union 合并结果集并去除重复项,union all 合并结果集不用去除重复项。
- 执行备注中的代码
- 简单的结果集联合:
SELECT FNumber,FName,FAge FROM T_Employee UNION SELECT FIdCardNumber,FName,FAge FROM T_TempEmployee
-
基本的原则:每个结果集必须有相同的列数;每个结果集的列必须类型相容。
SELECT FNumber,FName,FAge,FDepartment FROM T_Employee
UNION
SELECT FIdCardNumber,FName,FAge,’临时工,无部门' FROM T_TempEmployee
SELECT FName FROM T_Employee UNION SELECT FName FROM T_TempEmployee
UNION合并两个查询结果集,并且将其中完全重复的数据行合并为一条
===============分割线==================
SELECT FName FROM T_Employee UNION ALL SELECT FName FROM T_TempEmployee
Union因为要进行重复值扫描,所以效率低,因此如果不是确定要合并重复行,那么就用UNION ALL
案例1
- 要求查询员工的最低年龄和最高年龄,临时工和正式员工
要分别查询
SELECT '正式员工最高年龄',MAX(FAge) FROM T_Employee UNION ALL SELECT '正式员工最低年龄',MIN(FAge) FROM T_Employee UNION ALL SELECT '临时工最高年龄',MAX(FAge) FROM T_TempEmployee UNION ALL SELECT '临时工最低年龄',MIN(FAge) FROM T_TempEmployee
案例2
查询每位正式员工的信息,包括工号、工资,并且在最后一行加上所有员工工资额合计。
SELECT FNumber,FSalary FROM T_Employee UNION ALL SELECT '工资合计',SUM(FSalary) FROM T_Employee