Spark SQL执行MINUS查询语句报错,寻求解决方案
解决Spark SQL中MINUS语句报错的问题
Hey there! 我看到你在Spark SQL里执行MINUS查询时接连报错,这其实是个很常见的细节问题——Spark SQL并不支持MINUS关键字,它采用标准SQL中的EXCEPT(或EXCEPT ALL)语法来实现相同的差集查询功能。
针对你的两个查询,修改方案如下:
1. 第一个查询的修正
原报错语句:
SELECT * FROM encrypted_im.abc MINUS SELECT * FROM encrypted_im.abc;
替换为EXCEPT版本:
SELECT * FROM encrypted_im.abc EXCEPT SELECT * FROM encrypted_im.abc;
如果需要保留结果中的重复行(和部分数据库MINUS ALL行为一致),可以用:
SELECT * FROM encrypted_im.abc EXCEPT ALL SELECT * FROM encrypted_im.abc;
2. 第二个查询的修正
原报错语句:
SELECT store_num,store_nm FROM encrypted_im.base_abc minus SELECT store_num,store_nm FROM encrypted_im.base_abc;
替换为EXCEPT版本:
SELECT store_num,store_nm FROM encrypted_im.base_abc EXCEPT SELECT store_num,store_nm FROM encrypted_im.base_abc;
同样,如需保留重复行用EXCEPT ALL:
SELECT store_num,store_nm FROM encrypted_im.base_abc EXCEPT ALL SELECT store_num,store_nm FROM encrypted_im.base_abc;
补充说明:
EXCEPT会自动对结果去重,和Oracle等数据库中的MINUS行为一致;EXCEPT ALL不会去重,会保留所有在左表中存在但右表中不存在的行(包括重复项),对应部分数据库的MINUS ALL语法。
内容的提问来源于stack exchange,提问作者dasa m
相关产品推荐
相关产品推荐

