所以我想实现类似于“检查两个时间戳之间是否有任何条目”这样的代码,我能得到的就是这样的代码:
CASE WHEN EXISTS(SELECT * FROM sometable WHERE sometable.timestamp between othertable.time1 and othertable.time2) THEN 1 ELSE 0 END
然后Hive对我尖叫:
We can't transform correlated subquery having where correlated condition other than AND or in a non-equal expression.
从错误消息的字面含义判断,我认为在使用其他表中的列(从而形成相关子查询)时,可能无法将任何WHERE条件与<
>
或BETWEEN...AND...
以及EXISTS()
中的SELECT子句一起放置。
那么我该怎么做才能实现我想要的东西呢?
1条答案
按热度按时间1dkrff031#
您是对的。您可以像oracle一样在select中编写子查询。您可以将子查询左连接到主表并获得输出。因此,它可能如下所示