更新时间:2026-07-03 GMT+08:00
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;
父主题: 集合运算select