在where子句中的Hive子查询(从表1中选择*,其中dt>(从表2中选择max(dt))...请建议替代

use*_*483 5 hive hiveql apache-hive

我正在寻找像蜂巢一样的东西

Select * from table 1 where dt > (Select max(dt) from table2) 
Run Code Online (Sandbox Code Playgroud)

显然,hive不支持where子句中的子查询,即使我使用连接或半连接,它只比较=而不是>(据我所知).

有人可以建议我在hive中编写相同查询的替代解决方案吗?

Joe*_*e K 6

select table_1.* from table_1
join (select max(dt) as max_dt from table2) t2
where table_1.dt > t2.max_dt
Run Code Online (Sandbox Code Playgroud)

你是对的,你只能在join on子句中有相等的条件,但你可以在where子句中拥有你想要的任何东西.

通常这不推荐,因为没有on条款意味着Hive将首先执行完整的笛卡尔积,然后过滤,但由于连接的一侧只有一行,这不是问题.