更新时间:2026-07-03 GMT+08:00
EXCEPT
功能描述
EXCEPT返回两个查询结果的差集,即存在于第一个查询结果中但不存在于第二个查询结果中的行。EXCEPT默认去除重复行,使用EXCEPT ALL保留重复行。
语法格式
select_statement EXCEPT [ ALL ] select_statement;
参数说明
| 参数 | 说明 |
|---|---|
| EXCEPT | 集合差运算。返回左侧查询结果中存在但右侧查询结果中不存在的行。 |
| ALL | 加上ALL关键字后保留重复行。不加ALL时默认去除重复行。 |
注意事项
- 每一个SELECT语句返回的列数必须相同。
- 对应列的数据类型必须兼容。
- Spark 4.0支持EXCEPT ALL语法,保留重复行。
- 多个集合运算(UNION、INTERSECT、EXCEPT)可以通过括号控制优先级。
示例
基本EXCEPT差集(去重):
SELECT * FROM student_1 EXCEPT SELECT * FROM student_2;
EXCEPT ALL保留重复行(Spark 4.0):
SELECT * FROM student_1 EXCEPT ALL SELECT * FROM student_2;
使用括号控制优先级(Spark 4.0):
(SELECT * FROM student_1 EXCEPT SELECT * FROM student_2) UNION SELECT * FROM student_3;
父主题: 集合运算select