SQL 9 联合结果集 2. 联合结果集的原则
来源:互联网 发布:广州数控车床编程入门自学 编辑:程序博客网 时间:2024/06/03 20:40
联合结果集不必受被联合的多个结果集之间的关系限制,不过使用UNION仍然有两个基本的原则需要遵守:
1. 每个结果集必须有相同的列数;
2. 每个结果集的列必须类型相容。
1. 相同的列数
首先看第一个原则,每个结果集必须有相同的列数,两个不同列数的结果集是不能联合在一起的。比图下面的SQL语句是错误的:
SELECT FNumber, FName, FAge, FDepartment FROM T_Employee
UNION
SELECT FIdCardNumber, FName, FAge FROM T_TempEmployee
因为第一个结果接返回了4列数据,而第二结果集则返回了3列数据,数据库系统并不会用控制将第二个结果接补足为4列。如果需要将位置列补足为一个默认值,那么可以使用常量字段,比如下面的SQL语句就将第二结果集中与FDepartment对应的字段值设定为“临时工,不属于任何一个部门”:
SELECT FNumber, FName, Fage, FDepartment FROM T_Employee
UNION
SELECT FIdCardNumber, FName, FAge, '临时工, 不属于任何一个部门' FROM T_TempEmployee
执行结果:
+---------------+---------+------+--------------------------------+
| FNumber | FName | FAge | FDepartment |
+---------------+---------+------+--------------------------------+
| DEV001 | Tom | 25 | Development |
| DEV002 | Jerry | 28 | Development |
| DEV003 | Potter | NULL | Development |
| HR001 | Jane | 23 | HumanResource |
| HR002 | Tina | 25 | HumanResource |
| IT001 | Smith | 28 | InfoTech |
| IT002 | NULL | 27 | InfoTech |
| SALES001 | Timmy | 25 | Sales |
| SALES002 | Stone | 35 | Sales |
| 1234567890121 | Sarani | 33 | Special Part - Temporary Staff |
| 1234567890122 | Tom | 26 | Special Part - Temporary Staff |
| 1234567890123 | Yalaha | 38 | Special Part - Temporary Staff |
| 1234567890124 | Tina | 26 | Special Part - Temporary Staff |
| 1234567890125 | Konkaya | 29 | Special Part - Temporary Staff |
| 1234567890126 | Fotifa | 46 | Special Part - Temporary Staff |
| 1234567890127 | James | 24 | Special Part - Temporary Staff |
+---------------+---------+------+--------------------------------+
2. 类型相容
联合结果集的第二原则上:每个结果集的列必须类型相容,也就是说结果集的每个对应列的数据类型必须相同或者能够转换为同一种数据类型。比如下面SQL语句中MySQL中可以正确地执行:
SELECT FIdCardNumber, FAge, FName FROM T_TempEmployee
UNION
SELECT FNumber, FName, FAge FROM T_Employee
注:这SQL语句能在MySQL正常运行。可以看到MySQL将FAge转换为文本类型,以便于与FName字段的值匹配。
不过这句SQL语句在MS SQL Server、Oracle、DB2中执行则会报出错误信息
因为这邪恶数据库不会像MySQL那样进行默认的数据类型转换。
- SQL 9 联合结果集 2. 联合结果集的原则
- SQL 9 联合结果集 1. 简单的结果集联合
- SQL 9 联合结果集 4. 联合结果集应用举例
- SQL 9 联合结果集 概述与准备
- SQL 9 联合结果集 3. UNION ALL
- SQL语句返回多表联合查询的结果集的数据条数
- 查询语句之Union联合结果集
- union 联合查询结果
- ReportViewer显示两张表联合查询的结果
- 【数据库7】字段相关与联合结果集
- 类型转换,笛卡儿积和联合结果集
- 算法与结果联合分析
- union(联合)合并查询结果
- SQL server2008 多表联合查询,分页显示结果
- mysql下的多一表多结果的联合查询外加求和
- 基于ManyToOne的hibernate联合查询,使用JSON查看结果
- SSH 多表联合查询结果集如何显示在JSP上
- 每天一点数据库之-----Day 7 字段相关与联合结果集
- RedHat4 oracle10g安装
- Oracle imp和exp的使用
- Linux Kernel and Android 休眠与唤醒
- eclipse 上调试android的自带应用方法
- 一步一步学习计算机安全技术
- SQL 9 联合结果集 2. 联合结果集的原则
- namp技巧/技术记录
- Openvms全球用户行业
- Django动态添加model
- Curses Library 一些网上的资料
- .bash_profile和.bashrc的区别
- [转]ADROID 2.1 架构解析 3 亮度设置
- flash 绘图API:绘制弧线
- C++ typedef使用方法总结