首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“全部联合”的用途是什么?

问“全部联合”的用途是什么?
EN

Stack Overflow用户
提问于 2010-10-11 14:57:36
回答 12查看 5.9K关注 0票数 7

我不是在问它们之间的区别,我的问题是我们什么时候需要使用“全部联合”?

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2010-10-11 14:59:20

当您确实需要行的多个“副本”时,您可以使用UNION ALL,否则在使用UNION时这些行将被删除。它在查询端也可以更快,因为DB引擎不需要确定结果集之间的重复项。

票数 17
EN

Stack Overflow用户

发布于 2010-10-11 14:59:32

  • UNION将删除duplicates
  • UNION ALL not not remove duplicates

示例

代码语言:javascript
复制
SELECT 1 AS foo
UNION
SELECT 1 AS foo

= one row

SELECT 1 AS foo
UNION ALL
SELECT 1 AS foo

= two rows
票数 7
EN

Stack Overflow用户

发布于 2010-10-11 15:06:14

举个例子就明白了:

代码语言:javascript
复制
mysql> select * from tmp1;
+------+
| a    |
+------+
| foo1 |
| foo2 |
+------+
2 rows in set (0.00 sec)

mysql> select * from tmp2;
+------+
| a    |
+------+
| foo2 |
| foo3 |
| foo4 |
+------+
3 rows in set (0.00 sec)

mysql> select * from tmp1 union select * from tmp2;
+------+
| a    |
+------+
| foo1 |
| foo2 |   # DUPLICATES REMOVED.
| foo3 |
| foo4 |
+------+
4 rows in set (0.00 sec)

mysql> select * from tmp1 union all select * from tmp2;
+------+
| a    |
+------+
| foo1 |
| foo2 |
| foo2 |    # DUPLICATES NOT REMOVED.
| foo3 |
| foo4 |
+------+
5 rows in set (0.00 sec)

关于何时使用UNION ALL的问题?

如果您不关心结果集是否有重复行,或者如果您知道不会有任何重复,那么请使用UNION ALL而不是UNION。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3904049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档