UNION和UNION ALL之间有什么区别

有的时候需要将两个表数据合并起来或者获取两个表的相同部分,这个时候就涉及到集合操作了。本文主要根据stackoverflow:what-is-the-difference-between-union-and-union-all翻译而来,主要介绍了UNION和UNION ALL之间的区别。

原问题:

在SQL语句中,UNION和UNION ALL有什么区别。

采纳答案:

UNION去除了重复数据,每行的结果数据都是唯一的,UNION ALL未去除重复的数据,结果数据存在重复数据。

UNION相对于UNION ALL来说性能较低,因为数据库需要做一些而外的操作从而去除重复数据。一般情况下我们也不大需要重复的数据,尤其是进行报表开发的时候。

在识别重复数据的时候还要考虑到数据类型是否兼容,不同的数据库系统处理的方式不一样。比如在MS Jet需要截断长文本段生成较短的文本再进行比较,Oracle系统直接拒绝对二进制数据进行比较。

UNION示例:

SELECT 'foo' AS bar UNION SELECT 'foo' AS bar

UNION 结果:

+-----+
| bar |
+-----+
| foo |
+-----+
1 row in set (0.00 sec)

UNION ALL示例:

SELECT 'foo' AS bar UNION ALL SELECT 'foo' AS bar

UNION ALL 结果:

+-----+
| bar |
+-----+
| foo |
| foo |
+-----+
2 rows in set (0.00 sec)

执行SQL语句验证上述查询语句

本文根据StackOverflow翻译而来,不代表烟海拾贝立场,如若转载,请注明出处:https://somirror.com/609.html

(0)
上一篇 2022-02-25 11:38
下一篇 2022-02-25 21:20

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注