全国协议5人面授小班,企业级独立开发考核,转业者的IT软件工程师基地 登录/注册 | 如何报名
当前位置: 数据库   >  UNION 联合查询
admin · 更新于 2021-08-05

1.UNION ALL联合查询

同样为了演示方便,先向 teacher 表插入多条测试数据:

INSERT INTO teacher(name,age,id_number,email)VALUES('姓名一',17,'42011720200604077X',NULL),('姓名二',18,'42011720200604099X','123@qq.com'),('姓名三',19,'42011720200604020X',NULL),('姓名四',20,'42011720200604022X','345@qq.com'),('姓名五',21,'42011720200604033X',NULL),('姓名六',22,'42011720200604077X',NULL),('姓名七',23,'42011720200604099X','123@qq.com'),('姓名八',24,'42011720200604020X',NULL),('姓名九',25,'42011720200604022X','345@qq.com'),('姓名十',26,'42011720200604033X',NULL),('姓名1',27,'42011720200604077X',NULL),('姓名2',28,'42011720200604099X','123@qq.com'),('姓名3',29,'42011720200604020X',NULL),('姓名4',30,'42011720200604022X','345@qq.com'),('姓名5',31,'42011720200604033X',NULL),('姓名6',32,'42011720200604077X',NULL),('姓名7',33,'42011720200604099X','123@qq.com'),('姓名8',32,'42011720200604020X',NULL),('姓名9',31,'42011720200604022X','345@qq.com'),('姓名0',30,'42011720200604033X',NULL)
代码块
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

执行结果如下图:

现在使用 UNION ALL 把满足两种查询条件的结果集并到一起:

SELECT * FROM teacher WHERE age > 20UNION ALLSELECT * FROM teacher WHERE age > 25;
代码块
  • 1
  • 2
  • 3

执行结果如下图:

Tips:如上图所示,UNION ALL 将两种查询结果并到一起,仔细观察可以发现结果集中有重复的数据,所以使用 UNION ALL 联合查询的结果集没有去掉重复的数据。

2.UNION 联合查询

现在使用 UNION 把上面两种结果集并到一起:

SELECT * FROM teacher WHERE age > 20UNIONSELECT * FROM teacher WHERE age > 25;
代码块
  • 1
  • 2
  • 3


Tips:如上图所示,UNION 将两种查询结果并到一起,可以看到结果集中已经去掉重复的数据,需要根据具体业务选择使用 UNION 还是 UNION ALL

3.小结

本小节介绍了如何使用 UNION 和 UNION ALL 联合查询需要结果集,需要注意的是要根据具体业务选择使用 UNION 还是 UNION ALL 其中 UNION 联合查询已经去除了重复的结果集 UNION ALL 联合查询没有去除重复结果集,但是 UNION ALL查询性能要比 UNION好一些。


为什么选择汉码未来