union all 和union区别
时间: 2024-02-01 10:11:10 浏览: 87
SQL语句 UNION 和 UNION ALL 使用
union和union all是SQL中用于合并两个结果集的操作符,它们的区别主要体现在以下两个方面:
1. 返回结果集的唯一性:
- union操作符会返回两个结果集的并集,并且会自动去除重复的记录,保留唯一的记录。
- union all操作符会返回两个结果集的并集,不会去除重复的记录,保留所有的记录,包括重复的记录。
2. 排序和性能:
- union操作符会按照字段的顺序进行排序,确保返回的结果集是有序的。
- union all操作符只是简单地将两个结果集合并后返回,不进行排序操作。因此,从性能上讲,union all比union更快,特别是当两个结果集中没有重复记录且不需要排序时,推荐使用union all。
下面是一个示例,演示了union和union all的区别:
```sql
-- 创建两个表
CREATE TABLE table1 (
id INT,
name VARCHAR(10)
);
CREATE TABLE table2 (
id INT,
name VARCHAR(10)
);
-- 向表中插入数据
INSERT INTO table1 (id, name) VALUES (1, 'A');
INSERT INTO table1 (id, name) VALUES (2, 'B');
INSERT INTO table1 (id, name) VALUES (3, 'C');
INSERT INTO table2 (id, name) VALUES (2, 'B');
INSERT INTO table2 (id, name) VALUES (3, 'C');
INSERT INTO table2 (id, name) VALUES (4, 'D');
-- 使用union操作符合并结果集
SELECT id, name FROM table1
UNION
SELECT id, name FROM table2;
-- 输出结果:(去除了重复记录)
-- id | name
--+-----
-- 1 | A
-- 2 | B
-- 3 | C
-- 4 | D
-- 使用union all操作符合并结果集
SELECT id, name FROM table1
UNION ALL
SELECT id, name FROM table2;
-- 输出结果:(保留了重复记录)
-- id | name
--+-----
-- 1 | A
-- 2 | B
-- 3 | C
-- 2 | B
-- 3 | C
-- 4 | D
```
阅读全文