有的时候需要将两个表数据合并起来或者获取两个表的相同部分,这个时候就涉及到集合操作了。本文主要根据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)
本文根据StackOverflow翻译而来,不代表烟海拾贝立场,如若转载,请注明出处:https://somirror.com/609.html