联合结果集不必受被联合的多个结果集之间的关系限制,不过使用UNION仍然有两个
基本的原则需要遵守:一是每个结果集必须有相同的列数;二是每个结果集的列必须类型相
容
如果需要将未知列补足为一个默认值,那么可以使用常量字段,比如下面的SQL语
句就将第二个结果集的与FDepartment对应的字段值设定为“临时工,不属于任何一个部门”:
SELECT FNumber,FName,FAge,FDepartment FROM T_Employee
UNION
SELECT FIdCardNumber,FName,FAge,'临时工,不属于任何一个部门' FROM
T_TempEmployee
执行完毕我们就能在输出结果中看到下面的执行结果:
FNumber FName FAge FDepartment
1234567890121 Sarani 33 临时工,不属于任何一个部门
1234567890122 Tom 26 临时工,不属于任何一个部门
如果需要在联合结果集中返回所有的记录而不管它们是否唯一,则需要在
UNION运算符后使用ALL操作符,比如下面的SQL语句:
SELECT FName,FAge FROM T_Employee
UNION ALL
SELECT FName,FAge FROM T_TempEmployee
要求分别列出正式员工和临时工的姓名,要保留重复的姓名。
实现SQL语句如下:
MYSQL、MSSQLServer:
SELECT '以下是正式员工的姓名'
UNION ALL
SELECT FName FROM T_Employee
UNION ALL
SELECT '以下是临时工的姓名'
UNION ALL
SELECT FName FROM T_TempEmployee