MySQL中UNION与UNION ALL都是用于将两个或多个SELECT语句的结果合并为一个结果集,但两者有一些区别。
- UNION操作符会去掉重复的行,即两个SELECT语句结果中有相同的行,只会保留一个。注意,这种去重的操作是需要计算所需要的时间的,因此UNION的执行效率比UNION ALL的执行效率低一些。
- UNION ALL操作符不会去掉重复的行,即两个SELECT语句结果中有相同的行,两个都会保留。
基本的语法形式如下:
SELECT column1, column2, ..., columnn
FROM table1
UNION [ALL]
SELECT column1, column2, ..., columnn
FROM table2;
以上语句中,column1, column2,..., columnn是所要查询的列,而table1, table2是所查询的表名。
示例:假设我们有两个表t1和t2,它们的结构、内容如下:
t1表:
id name age
1 Tom 16
2 Peter 18
3 Jack 20
4 Tom 25
t2表:
id name age
1 Jack 20
2 Tom 30
3 Lucy 22
我们可以使用以下两个查询语句来演示UNION和UNION ALL的用法:
- 使用UNION操作符:
SELECT name, age FROM t1
UNION
SELECT name, age FROM t2;
以上语句查询结果如下:
name age
Jack 20
Lucy 22
Peter 18
Tom 16
Tom 25
Tom 30
可以看到,以上结果是将t1表和t2表中的所有行做了去重操作后得到的。
- 使用UNION ALL操作符:
SELECT name, age FROM t1
UNION ALL
SELECT name, age FROM t2;
以上语句查询结果如下:
name age
Tom 16
Peter 18
Jack 20
Tom 25
Jack 20
Tom 30
Lucy 22
可以看到,以上结果和t1表和t2表中的所有行都包括进了结果集,没有去重操作。
除此之外,UNION和UNION ALL还可以用来合并多个SELECT语句的结果,示例如下:
SELECT name, age FROM t1
UNION ALL
SELECT name, age FROM t2
UNION ALL
SELECT name, age FROM t1
以上语句可以将t1表和t2表的内容合并到一起,并将这个结果再和t1表的内容合并到一起。
总结:UNION和UNION ALL操作符都是用于将两个或多个SELECT语句的结果合并为一个结果集,但UNION会去除结果中的重复行,而UNION ALL则会保留。需要注意的是,UNION的执行效率比UNION ALL的执行效率低,因为它需要计算去重。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL中UNION与UNION ALL的基本使用方法 - Python技术站