22. UNION 联合查询
目录
前面介绍了如何使用 WHERE 给查询加上条件约束,本小节介绍如何使用 UNION 联合查询。实际业务中,有时候需要把满足多种独立条件的结果集整合到一起,就可以使用 UNOIN 联合查询,本小节介绍 UNION
和 UNION ALL
的用法和区别。
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)
执行结果如下图:
现在使用 UNION ALL
把满足两种查询条件的结果集并到一起:
SELECT * FROM teacher WHERE age > 20 UNION ALL SELECT * FROM teacher WHERE age > 25;
执行结果如下图:
如上图所示,UNION ALL
将两种查询结果并到一起,仔细观察可以发现结果集中有重复的数据,所以使用 UNION ALL
联合查询的结果集没有去掉重复的数据。
2.UNION 联合查询
现在使用 UNION 把上面两种结果集并到一起:
SELECT * FROM teacher WHERE age > 20 UNION SELECT * FROM teacher WHERE age > 25;
执行结果如下图:
如上图所示,UNION
将两种查询结果并到一起,可以看到结果集中已经去掉重复的数据,需要根据具体业务选择使用 UNION
还是 UNION ALL
。
3.小结
本小节介绍了如何使用 UNION
和 UNION ALL
联合查询需要结果集,需要注意的是要根据具体业务选择使用 UNION
还是 UNION ALL
其中 UNION
联合查询已经去除了重复的结果集 UNION ALL
联合查询没有去除重复结果集,但是 UNION ALL
查询性能要比 UNION
好一些。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
码云笔记 » 22. UNION 联合查询
码云笔记 » 22. UNION 联合查询