首页 >> sql语句 >> 详细内容
sql语句
 
sql语句 >> 正文
联合语句union
日期:2017/6/15 
Union 指的是并预算,是将两个或更多查询的结果组合为单个结果集,该结果集包含联合查询中的所有查询的全部行
1、 使用联合查询
在使用union运算符进应遵循以下准则
(1) 在使用union运算符组合的语句中,所有选择列表的表达式数目必须相同(列名,算术表达式,聚集函数)
(2) 在使用union组合的结果集中的相应列或个别查询中使用的任意列的子集必须具有相同数据类型并且两种类型之间必须存在可能的隐性数据转换
(3) 用union运算符组合的各语句中对应的结果集列出现的顺序必须相同,因为union运算符是按照各个查询给定的顺序逐个比较各列
将高考成绩表中总成绩大于500的考生与高考学生信息表中籍贯为中国北京的考生信息一起显示出来
Select 考生编号,姓名,考生类别 from 高考学生信息表 where 籍贯=’中国北京’ union select 考生编号,姓名,考生类别 from 高考成绩表 where 总成绩>500 and 考生类别=’文科考生’
2、 多表联合查询
利用union语句将成绩表中的学生姓名,成绩大于90的信息,课程表中的课程名称等于“计算机英语”的信息,出勤表中的出勤率大于0.8的出勤率信息共同显示在数据网格控件的同一列中
Select 姓名from 学生信息表union select 课程名称 from 课程表 where 课程名称=’计算机英语’ union select convert(varchar(20),成绩)from 学生成绩表 where 成绩>90union select convert(varchar(20),出勤率)from 学生考勤表 where 出勤率>0.8
结果是:
0.85
0.95
计算机英语
刘那
王一
3、 对联合查询后的结果进行排序
在多表联合查询的sql语句后面添加order by 成绩 desc 语句,则执行联合查询的结果按照成绩降序排序,在多表联合的sql语句后面添加order by 成绩 asc语句,则执行的联合查询的结果将按照“成绩“升序排序
实现升序的语句如下
Select cast(成绩 as varchar(20)) as 成绩 from 学生成绩表 union select distinct 课程编号 from 学生信息表union select 课程名称 from 课程表 where 课程名称=‘计算机英语’union select convert(varchar(20),出勤率)from 学生考勤表where 出勤率>0.8
注意:sql server 中默认方式为升序排序。Cast 和convert 提供相似功能,将某种数据类型的表达式显式转换为别一种数据类型
实现降序的语句如下
Select cast(成绩 as varchar(20)) as 成绩 from 学生成绩表 union select distinct 课程编号 from 学生信息表union select 课程名称 from 课程表 where 课程名称=‘计算机英语’union select convert(varchar(20),出勤率)from 学生考勤表where 出勤率>0.8 order by 成绩 desc