mysql中 UNION和UNION all的区别
时间: 2023-12-10 11:37:50 浏览: 111
UNION 和 UNION ALL 都是将两个或多个 SELECT 语句的结果集合并成一个结果集。
不同之处在于:
1. UNION 会去重,而 UNION ALL 不会去重。
2. UNION ALL 的执行速度比 UNION 更快,因为不需要去重的操作。
举个例子:
假设有两个表 A 和 B,它们的结构相同,都有两个字段:name 和 age。表 A 中有以下数据:
name | age
-----|----
Tom | 20
Tom | 25
Jerry| 30
表 B 中有以下数据:
name | age
-----|----
Tom | 20
Mary | 35
那么执行以下 SQL 语句:
```
SELECT name, age FROM A
UNION
SELECT name, age FROM B;
```
结果为:
name | age
------|----
Jerry | 30
Mary | 35
Tom | 20
Tom | 25
注意到结果中,Tom 这个名字出现了两次,因为 UNION 去重了其中一个。而如果将上面的 SQL 语句改为:
```
SELECT name, age FROM A
UNION ALL
SELECT name, age FROM B;
```
结果为:
name | age
------|----
Tom | 20
Tom | 25
Jerry | 30
Tom | 20
Mary | 35
可以看到,UNION ALL 不会去重,因此结果中出现了两个 Tom。
阅读全文