
# UNION
#### 功能描述
UNION返回多个查询结果的并集。UNION默认去除重复行，使用UNION ALL保留重复行。
#### 语法格式
```
select_statement UNION [ ALL ] select_statement;
```
#### 参数说明
| 参数    | 说明                                                   |
|:---|:---|
| UNION | 集合并运算，将多个查询结果合并。默认去除重复行。                             |
| ALL   | 加上ALL关键字后保留重复行，即不去重。UNION ALL的性能通常优于UNION，因为不需要去重操作。 |
   
#### 注意事项
- 每一个SELECT语句返回的列数必须相同。
- 对应列的数据类型必须兼容。
- 结果集的列名由第一个SELECT语句决定。
- UNION默认去重，UNION ALL不去重。在不需要去重的场景下，推荐使用UNION ALL以获得更好的性能。
- 多个集合运算（UNION、INTERSECT、EXCEPT）可以通过括号控制优先级（Spark 4.0）。
 
#### 示例
UNION去重并集：
```
SELECT * FROM student_1 UNION SELECT * FROM student_2;
```
UNION ALL不去重并集：
```
SELECT * FROM student_1 UNION ALL SELECT * FROM student_2;
```
使用括号控制优先级（Spark 4.0）：
```
(SELECT * FROM student_1 UNION ALL SELECT * FROM student_2)
   INTERSECT SELECT * FROM student_3;
```
多表UNION：
```
SELECT name FROM student_1
   UNION ALL
SELECT name FROM student_2
   UNION ALL
SELECT name FROM student_3;
```
