Mysql联合查询union和union all的使用介绍_软件开发

《MySQL 教程》UNION 联合查询

前面介绍了如何使用 WHERE 给查询加上条件约束,本小节介绍如何使用 UNION 联合查询。实际业务中,有时候需要把满足多种独立条件的结果集整合到一起,就可以使用 UNOIN 联合查询,本小节介绍 UNIONUNION ALL 的用法和区别。

1.UNION ALL联合查询

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

INSERT INTO teacher
(name,age,id_number,email)
VALUES
(&#;姓名一&#;,,&#;42011720200604077X&#;,NULL),
(&#;姓名二&#;,,&#;42011720200604099X&#;,&#;@qq.com&#;),
(&#;姓名三&#;,,&#;42011720200604020X&#;,NULL),
(&#;姓名四&#;,,&#;42011720200604022X&#;,&#;@qq.com&#;),
(&#;姓名五&#;,,&#;42011720200604033X&#;,NULL),
(&#;姓名六&#;,,&#;42011720200604077X&#;,NULL),
(&#;姓名七&#;,,&#;42011720200604099X&#;,&#;@qq.com&#;),
(&#;姓名八&#;,,&#;42011720200604020X&#;,NULL),
(&#;姓名九&#;,,&#;42011720200604022X&#;,&#;@qq.com&#;),
(&#;姓名十&#;,,&#;42011720200604033X&#;,NULL),
(&#;姓名1&#;,,&#;42011720200604077X&#;,NULL),
(&#;姓名2&#;,,&#;42011720200604099X&#;,&#;@qq.com&#;),
(&#;姓名3&#;,,&#;42011720200604020X&#;,NULL),
(&#;姓名4&#;,,&#;42011720200604022X&#;,&#;@qq.com&#;),
(&#;姓名5&#;,,&#;42011720200604033X&#;,NULL),
(&#;姓名6&#;,,&#;42011720200604077X&#;,NULL),
(&#;姓名7&#;,,&#;42011720200604099X&#;,&#;@qq.com&#;),
(&#;姓名8&#;,,&#;42011720200604020X&#;,NULL),
(&#;姓名9&#;,,&#;42011720200604022X&#;,&#;@qq.com&#;),
(&#;姓名0&#;,,&#;42011720200604033X&#;,NULL)

执行结果如下图:

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

SELECT * FROM teacher WHERE age > 
UNION ALL
SELECT * FROM teacher WHERE age > ;

执行结果如下图:

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

2.UNION 联合查询

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

SELECT * FROM teacher WHERE age > 
UNION
SELECT * FROM teacher WHERE age > ;

执行结果如下图:

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

3.小结

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

原文链接:,转发请注明来源!