我在运行Spark SQL查询时遇到问题,该查询使用带有“ where in”子句的嵌套选择。在 table1 下面的查询中,它代表一个临时表,该表来自更复杂的查询。最后,我想用该查询替换 table1 。
select * from (select * from table1) as table2
where (product, price)
in (select product, min(price) from table2 group by product)
我收到的Spark错误说:
AnalysisException:'未找到表或视图:table2;
如何更改查询以使其按预期工作?
答案 0 :(得分:0)
subquery
(即(select * from table1) as table2
)是不必要的,它仅限于subquery
定义后不能与in
或where
一起使用的立即使用子句,您可以改为使用correlated
子查询:
select t1.*
from table1 t1
where t1.price = (select min(t2.price) from table1 t2 where t2.product = t1.product);