表的合并操作将两个表的行合并到一个表中,不需要对这些行做任何更改。
画了个图:
A,B分别代表两个数据来源。
把“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一般在下列的情况:
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='男'
演示:
合并表只能有一个order by子句,并且必须放在语句末尾。它在两个select语句中都提供了用于合并所有行的排序。
例如:
select Sname,Sage from Student
where Sex='男'
union all
select Cname,Credit from Course
order by Sage ASC
演示:
合并表的数据类型不一定是相同的,只要数据类型兼容就可以了。
举个例子:
USE db_Test
SELECT Sno,Sage FROM Student
UNION ALL
SELECT Cno,Grade FROM Sc
Sage是整形,Grade是浮点类型。
演示:
前面我已经讲过数据类型的转换了,当两个数据并不兼容的时候,需要转换一下,比如数字和字符。
举个例子:把Grade整形转化为字符型,并把两个结果合并
USE db_Test
SELECT Sname,Sex FROM Student
UNION ALL
SELECT Cname,str(Credit) FROM Course
str就是转化为字符的函数。
演示:
比如将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代替
演示:
将Student ,Course ,SC表合并:
USE db_Test
SELECT Sname,Sex FROM Student
UNION
SELECT Cno,Cname FROM Course
UNION
SELECT Sno,Cno FROM SC
演示:
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_46211269/article/details/122163734
内容来源于网络,如有侵权,请联系作者删除!