
# INTERSECT
#### 功能描述
INTERSECT返回多个查询结果的交集，即同时存在于所有查询结果中的行。INTERSECT默认去除重复行，使用INTERSECT ALL保留重复行。
#### 语法格式
```
select_statement INTERSECT [ ALL ] select_statement;
```
#### 参数说明
| 参数        | 说明                            |
|:---|:---|
| INTERSECT | 集合交运算。返回同时存在于左侧和右侧查询结果中的行。    |
| ALL       | 加上ALL关键字后保留重复行。不加ALL时默认去除重复行。 |
   
#### 注意事项
- 两个SELECT语句返回的列数必须相同。
- 对应列的数据类型必须兼容。
- Spark 4.0支持INTERSECT ALL语法，保留重复行。
- 多个集合运算（UNION、INTERSECT、EXCEPT）可以通过括号控制优先级。
 
#### 示例
基本INTERSECT交集（去重）：
```
SELECT * FROM student_1 INTERSECT SELECT * FROM student_2;
```
INTERSECT ALL保留重复行（Spark 4.0）：
```
SELECT * FROM student_1 INTERSECT ALL SELECT * FROM student_2;
```
使用括号控制优先级（Spark 4.0）：
```
(SELECT * FROM student_1 INTERSECT SELECT * FROM student_2)   UNION SELECT * FROM student_3;
```
