sqlsever2019:union合并多个查询结果

x33g5p2x  于2021-12-27 转载在 其他  
字(1.3k)|赞(0)|评价(0)|浏览(292)

一、前言

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

二、区别union和连接

画了个图:

A,B分别代表两个数据来源。

三、union实例

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

  1. use db_Test
  2. select Cno,Cname from Course
  3. union
  4. select Sname,Sex from Student

演示:

四、union all合并表

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

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

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

  1. select * from Student where Sage>20
  2. union all
  3. select * from Student where Sex='男'

演示:

五、union中的oder by子句

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

  1. select Sname,Sage from Student
  2. where Sex='男'
  3. union all
  4. select Cname,Credit from Course
  5. order by Sage ASC

演示:

六、union自动数据类型转换

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

  1. USE db_Test
  2. SELECT Sno,Sage FROM Student
  3. UNION ALL
  4. SELECT Cno,Grade FROM Sc

Sage是整形,Grade是浮点类型。
演示:

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

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

  1. USE db_Test
  2. SELECT Sname,Sex FROM Student
  3. UNION ALL
  4. SELECT Cname,str(Credit) FROM Course

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

演示:

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

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

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

演示:

九、union多表合并

将Student ,Course ,SC表合并:

  1. USE db_Test
  2. SELECT Sname,Sex FROM Student
  3. UNION
  4. SELECT Cno,Cname FROM Course
  5. UNION
  6. SELECT Sno,Cno FROM SC

演示:

相关文章