sqlsever2019:union合并多个查询结果

举报
川川菜鸟 发表于 2022/04/16 00:06:51 2022/04/16
【摘要】 文章目录 一、前言二、区别union和连接三、union实例四、union all合并表五、union中的oder by子句六、union自动数据类型转换七、使用union合并不同类型的数据八、u...

一、前言

表的合并操作将两个表的行合并到一个表中,不需要对这些行做任何更改。

二、区别union和连接

画了个图:
在这里插入图片描述
A,B分别代表两个数据来源。

三、union实例

把“select Cno,Cname from Course”和“select Sname,Sex from Student”结果合并.

use db_Test
select Cno,Cname from Course
union
select Sname,Sex  from Student

  
 

演示:
在这里插入图片描述

四、union all合并表

使用union all一般在下列的情况:

  1. 知道又重复行并想保留这些行
  2. 知道不可能有任何重复的行
  3. 不在乎有任何重复的行
SQL交流群:696774324

  
 

用union all把select * from Student where Sage>20和select * from Student where Sex='男’查询结果合并。

select * from Student where Sage>20
union all
select * from Student where Sex='男'

  
 

演示:
在这里插入图片描述

五、union中的oder by子句

合并表只能有一个order by子句,并且必须放在语句末尾。它在两个select语句中都提供了用于合并所有行的排序。
例如:

select Sname,Sage from Student
where Sex='男'
union all
select Cname,Credit from Course
order by Sage ASC

  
 

演示:
在这里插入图片描述

六、union自动数据类型转换

合并表的数据类型不一定是相同的,只要数据类型兼容就可以了。
举个例子:

USE db_Test
SELECT Sno,Sage FROM Student 
UNION ALL
SELECT Cno,Grade FROM Sc 

  
 

Sage是整形,Grade是浮点类型。
演示:
在这里插入图片描述

七、使用union合并不同类型的数据

前面我已经讲过数据类型的转换了,当两个数据并不兼容的时候,需要转换一下,比如数字和字符。
举个例子:把Grade整形转化为字符型,并把两个结果合并

USE db_Test
SELECT Sname,Sex FROM Student 
UNION ALL
SELECT Cname,str(Credit) FROM Course 

  
 

str就是转化为字符的函数。

演示:
在这里插入图片描述

八、union合并不同列数的两个表

比如将SELECT Sname,Sex,Sage FROM Student 和SELECT Cno,Cname,NULL FROM Course 合并,并把null值添加到Course表。

USE db_Test
SELECT Sname,Sex,Sage FROM Student 
UNION ALL
SELECT Cno,Cname,NULL  FROM Course --不同列用null代替

  
 

演示:
在这里插入图片描述

九、union多表合并

将Student ,Course ,SC表合并:

USE db_Test
SELECT Sname,Sex FROM Student 
UNION 
SELECT Cno,Cname  FROM Course 
UNION 
SELECT Sno,Cno FROM SC

  
 

演示:
在这里插入图片描述

文章来源: chuanchuan.blog.csdn.net,作者:川川菜鸟,版权归原作者所有,如需转载,请联系作者。

原文链接:chuanchuan.blog.csdn.net/article/details/122163734

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。