关键词

MySQL中UNION与UNION ALL的基本使用方法

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的用法:

  1. 使用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表中的所有行做了去重操作后得到的。

  1. 使用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的执行效率低,因为它需要计算去重。

本文链接:http://task.lmcjl.com/news/18269.html

展开阅读全文